采用如下语句可以创建非模式对话框
CModelessDlg *pdlg= new CModelessDlg;
pdlg.Create(IDD_MODELESS, this);
pdlg.ShowWindow(SW_SHOW);
在销毁非模式对话框时如果使用如下方式
delete pdlg;
直接将非模式对话框对象删除,在Debug时会报如下Warning
Warning: calling DestroyWindow in CWnd::~CWnd; OnDestroy or PostNcDestroy in derived class will not be called.
因此采用另一种方式
在CModelessDlg类中冲在PostNcDestroy()
CModelessdlg::PostNcDestroy()
{
CModelessdlg::PostNcDestroy();
delete this;
}
在析构函数中调用DestroyWindow
网上有资料称应在析构函数中调用DestroyWindow
CModelessdlg::~ CModelessdlg ()
{
DestroyWindow();
}
但经过验证实际上不需要再显式的调用DestroyWindow();
OnDestroy也会被调用