Visual c++ 在MFC中调用从OnOk中删除此

Visual c++ 在MFC中调用从OnOk中删除此,visual-c++,mfc,self-destruction,Visual C++,Mfc,Self Destruction,可能重复: 从OnOk事件处理程序调用delete是正确的,如下代码所示 void CTestDlg::OnOK() { CDialog::OnOK(); this->DestroyWindow(); delete this; } 我猜您之所以尝试所有这些,是因为dialog实例是非模态的 在这种情况下,您可以从重写中删除基类OnOK(),但仅销毁window() 如果您必须删除此,则必须覆盖PostNcDestroy() 请您解释一下,为什么不调用CDia

可能重复:

从OnOk事件处理程序调用delete是正确的,如下代码所示

void CTestDlg::OnOK() 
{
    CDialog::OnOK();

    this->DestroyWindow();
    delete this;
}

我猜您之所以尝试所有这些,是因为dialog实例是非模态的

在这种情况下,您可以从重写中删除基类OnOK(),但仅销毁window()


如果您必须
删除此
,则必须覆盖
PostNcDestroy()

请您解释一下,为什么不调用CDialog::OnOk()?OnOk()实际上是针对DoModal()的,而您的是无模式的,需要更恰当地关闭。如果一个调用甚至是针对无模式对话框,它会有什么不同吗?对不起,如果这个问题激怒了你!因为我没有得到定义了CDialog::OnOk()的源文件。它不应该被关闭,它不是重复的,而是一个特定的MFC无模式对话框问题。