【发布时间】:2015-12-13 06:14:46
【问题描述】:
我想在模态对话框中使用相同的类 CTestDialog
CTestDialog dlg;
dlg.DoModal();
对于无模式对话框
m_pDlg = new CTestDialog;
m_pDlg->Create(CTestDialog::IDD,this);
m_pDlg->ShowWindow(SW_SHOW);
我遇到的问题是在 PostNcDestroy(..) 如果它被构造为模态对话框,它会崩溃:
void CTestDialog::PostNcDestroy()
{
CDialog::PostNcDestroy();
delete this; // <= need for modeless, but Crash! if constructed as modal Dialog
}
如何直接确定该类是构造为无模式对话框还是模式对话框?
【问题讨论】:
-
是的,如果对话框被构造为模式对话框(在堆栈上),我想避免删除。通常,无模式对话框对象在堆上的某处创建并在 PostNcDestroy() 中自行销毁
-
您是否尝试过检查DS_MODALFRAME 样式?
-
你需要离开删除这个;否则你会有内存泄漏
-
@rrrower 我已经检查过了,它有相同的样式,我使用相同的类和对话框资源。
标签: mfc dialog modal-dialog