我想使用相同的類CTestDialog
一個模式對話框區分無模式VS模式對話框
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](https://msdn.microsoft.com/en-us/library/windows/desktop/ff729172 (v = vs.85).aspx)風格? – rrirower
你需要離開刪除這個;因爲否則你會有內存泄漏 – demonplus