您的位置:首页 > 其它

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和派生类一般是嵌在另一个类中或建立在堆栈中的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: