0

我有一个应用程序,其中有很多窗口,每个窗口都有一个不同的CDialog派生类。

我的应用程序多年来一直运行良好,delete thisPostNcDestroy()现在我环顾四周,我没有看到任何正确或需要的证据。摆脱我的CDialog子类对象的正确方法是什么?

4

1 回答 1

0

如果对话框是无模式的,那么调用delete this;PostNcDestroy正常的方法。

请参阅: https: //support.microsoft.com/en-us/kb/103788

您需要格外小心,不要在对话框关闭后访问悬空指针。

例如,我们做这样的事情:

void CMainFrame::DoSomething()
{ 
   MyModelessDialog* p = new MyModelessDialog;
   p->Create(IDD_MODELESS_DIALOG, ... );
}

/// ...
void MyModelessDialog::PostNcDestroy() 
{
    __super::PostNcDestroy(); // call base class to do clean up before deleting.
    delete this;
}
于 2015-11-27T17:33:57.040 回答