MFC窗口剖析
2005-05-18 11:15
176 查看
MFc中CWND类是对原来调用API进行的一个封装,他创建了CreateWindows后把窗口句柄放在m_hWnd这个变量中。cwnd 对象知道窗口类,但窗口类不知道cWnd对象,所以消除窗口的时候,Cwnd 并不知道。
因为,c++支持虚函数,而虚函数是用指针进行操作的因此定义一个
Cwnd cwnd
Cwnd *pWnd
cwnd.Create();
pWnd->Create();
往往后者能成功,而前者会失败创建窗口。
CWnd* pWnd = new CWnd;
pWnd->Create(_T("STATIC"), "Hi", WS_CHILD | WS_VISIBLE,
CRect(0, 0, 20, 20), this, 1234);
delete pWnd;
此时,窗口对象已经被销毁,看不出了。
p W n d - > D e s t r o y Window( ); //destroys Window Object
delete pWnd;
如果需要在销毁窗口的同时销毁C W n d对象,则应该在C W n d的派生类中添加下面的重载函
数:
C YourWnd::PostNcDestroy( )
{
delete this;
}
PostNcDestroy( )是销毁窗口前调用的最后一个成员函数。但是,几乎不需对该函数进行
重载,因为C W n d和派生类一般是嵌在另一个类中或建立在堆栈中的。
因为,c++支持虚函数,而虚函数是用指针进行操作的因此定义一个
Cwnd cwnd
Cwnd *pWnd
cwnd.Create();
pWnd->Create();
往往后者能成功,而前者会失败创建窗口。
CWnd* pWnd = new CWnd;
pWnd->Create(_T("STATIC"), "Hi", WS_CHILD | WS_VISIBLE,
CRect(0, 0, 20, 20), this, 1234);
delete pWnd;
此时,窗口对象已经被销毁,看不出了。
p W n d - > D e s t r o y Window( ); //destroys Window Object
delete pWnd;
如果需要在销毁窗口的同时销毁C W n d对象,则应该在C W n d的派生类中添加下面的重载函
数:
C YourWnd::PostNcDestroy( )
{
delete this;
}
PostNcDestroy( )是销毁窗口前调用的最后一个成员函数。但是,几乎不需对该函数进行
重载,因为C W n d和派生类一般是嵌在另一个类中或建立在堆栈中的。
相关文章推荐
- MFC窗口程序启动运行机制剖析
- 剖析MFC多线程程序的同步机制
- MFC六大关键技术剖析之动态创建
- MFC中手动create窗口退出程序报错的解决方法
- 详解MFC框架窗口、文档和视图
- 【转载】SDL2.0在mfc窗口中显示yuv的一种方法
- MFC改变窗口标题“无标题—title”(title为程序名)
- MFC设置透明窗口
- MFC PreTranslateMessage(MSG* pMsg)中调用DoModal()模态窗口问题
- MFC——2.MFC框架程序剖析
- MFC中调用CWnd::ShowWindow(SW_HIDE)或者(SW_SHOW)后发送的窗口消息
- 孙鑫VC++讲座笔记-(3)MFC程序框架的剖析
- MFC中创建console窗口
- 【整理】MFC单文档程序窗口大小的设置
- 在MFC中怎样将窗口最小化到托盘并恢复
- 禁止调整窗口大小(MFC)
- 关于MFC窗口隐藏的方法
- MFC----窗口的重绘
- [MFC]解决回车键 ESC 默认关闭窗口的一般方法
- MFC子父窗口发送消息