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无模式对话框问题。