不调用下面代码在非模式对话框析构函数打断点也能进入呀//????
既然我们已分配内存就堆,我们必须将它删除时,非模式对话框是摧毁,否则我们很快会遇到很大的麻烦与内存泄漏,左,右和中心。当对话框是摧毁了最后一则留言,我们收到处理类是WM_NCDESTROY消息。该OnNcDestroy功能函数是引用,这在原来调用虚拟函数PostNcDestroy 。这正是我们可以delete我们的非模式对话框。 First Call调查的基类的功能函数,以便它是否自己的清理。步骤/方法
void CModeLess::PostNcDestroy()
{
CDialog::PostNcDestroy();
delete this;
}
[解决办法]
只要不是重复delete 在哪delete都行。
OnNcDestroy 有两个好处
1. 这个消息不会重复,不会遗漏。所以不会重复delete,也不会遗漏delete。
2. 这个消息是窗口收到的最后一个消息,也就是收到这个消息后,这个窗口就没用了。
这是最早的delete不会出错的地方。
因此大多推荐在这个地方delete.
你那种方式,代码只有那么几个类,因此是无所谓的。
再加个类,引用了非模式窗口。
那么你还要在这个类的析构函数里面再写一次delete。
而在OnNcDestroy,就不需要再写。