我现在用wizard生成了一个Dialog-MFC project。如果我想动态创建一个控件,比如说是静态框之类的,在该对话框类里我可以直接编写代码,比如修改OnOK()
.............
CStatic m_static;
m_static.Create(_T("在对话框类下创建静态框",WS_CHILD|WS_VISIBLE|SS_SUNKEN,
CRect(0,200,100,250),pWnd,IDC_STATIC);
m_static.ShowWindow(SW_SHOW);
//CDialog OnOK();
.............我的问题是,我现在必须在另一个类里面动态创建该控件。该类为一般类。在调用该类的函数之前,对话框已经生成了。举例来说,我在对话框上新增加一个botton,响应为OnTest()
.........
CWnd* pWnd=this;
CMyControl mMyControl;
mMyControl.AddNewControl(pWnd);
.........
在CMyControl里面,我的AddNewControl(CWnd* pWnd)代码为:
..........
CStatic m_mystatic;
m_mystatic.Create(_T("在另一个类创建静态框",WS_CHILD|WS_VISIBLE|SS_SUNKEN,
CRect(200,200,400,250),pWnd,IDC_STATIC);
m_mystatic.ShowWindow(SW_SHOW);
..........
但是,程序调试通过,为什么执行时候就报Access violation呢?
设置断点到AddNewControl(CWnd* pWnd)里面,是Create出错,不知道怎么办才好?
.............
CStatic m_static;
m_static.Create(_T("在对话框类下创建静态框",WS_CHILD|WS_VISIBLE|SS_SUNKEN,
CRect(0,200,100,250),pWnd,IDC_STATIC);
m_static.ShowWindow(SW_SHOW);
//CDialog OnOK();
.............我的问题是,我现在必须在另一个类里面动态创建该控件。该类为一般类。在调用该类的函数之前,对话框已经生成了。举例来说,我在对话框上新增加一个botton,响应为OnTest()
.........
CWnd* pWnd=this;
CMyControl mMyControl;
mMyControl.AddNewControl(pWnd);
.........
在CMyControl里面,我的AddNewControl(CWnd* pWnd)代码为:
..........
CStatic m_mystatic;
m_mystatic.Create(_T("在另一个类创建静态框",WS_CHILD|WS_VISIBLE|SS_SUNKEN,
CRect(200,200,400,250),pWnd,IDC_STATIC);
m_mystatic.ShowWindow(SW_SHOW);
..........
但是,程序调试通过,为什么执行时候就报Access violation呢?
设置断点到AddNewControl(CWnd* pWnd)里面,是Create出错,不知道怎么办才好?
http://www.yangning.com/cgi-bin/topic.cgi?forum=1&topic=65&show=0
http://www.yangning.com/cgi-bin/topic.cgi?forum=1&topic=49&show=0
谢谢王进