请大侠耐心解决我的问题(关于VC销毁窗口对象),万分感激,谢谢
rfit 2000-04-19 01:25:00 VC 技术内幕(清华) 例子:
在视窗 ( CView ) 内创建了一个非模态对话框,按下鼠标左键显示对话框,
右键关闭。
我在 CmyappView 的构造函数和析构函数中分别设定了
dia=new CmyappDialog(this);
和 delete dia;
在左键消息处理函数中 添加了 dia->Create();
在右键消息处理函数中 添加了 dia->DestroyWindow();
程序运行成功。( 省略了一些步奏 , 如编辑对话框 )
但我有些疑问:
1.DestroyWindow()虽不销毁窗口对象,但它向窗口发送WM_DESTROY和WM_NCDESTROY
引起OnNcDestory(), 由此调用CWnd::PostNcDestroy().
书上说 PostNcDestroy() 将会把窗口对象删除。那么,上面的程序
为什么还要加上delete dia; 是不是我理解错了,请大侠帮助
2.问PostNcDestroy()在用户不加任何代码时,有什么用?
有文章建议:
void CMyappDialog::PostNcDestroy
{
delete this; //删除对象本身
}
该函数到底是本身就有删除窗口对象的功能,还是本身不能删除窗口对象,但适合在
其函数内加入删除窗口对象的代码,我有些不明白!
如果把这段代码加入上面的程序中,不在CmyappView 的析构函数中
添加delete dia; 程序运行失败,为什么?