我:
通过Create函数来调用非模态对话框是关键之处。
由于create不会启动新的消息循环,对话框与应用程序共用同一个消息循环,这样对话框就不会垄断用户的输入。
Create函数会在显示了对话框之后立即返回,而DOMODAL()函数是在对话框被关闭后才返回。
由于窗口对象的生存期应长于对应的窗口,也就是说,窗口(或者说对话框)关闭了,但是对象并不一定会被删除。
由于Create返回后,不能确定对话框是否被关闭,所以何时去删除对象成为一个程序员需要考虑的事情。
如此一来,对象的创建一定不能是局部变量,必须是采用 new来创建再heap中。 关于非模态对话框的销毁,
应该是重载PostNcDestroy函数,见后边的参考代码。
// 网摘内容:非模态对话框相对于模态对话框,他的创建和销毁过程和模态对话框有一定的区别 先看一下MSDN的原文:
When you implement a modeless dialog box, always override the OnCancel member function and call
DestroyWindow from within it. Don’t call the base class CDialog::OnCancel, because it calls EndDialog, which will
make the dialog box invisible but will not destroy it. You should also override PostNcDestroy for modeless dialog
boxes in order to delete this, since modeless dialog boxes are usuall