好吧,我承认我对 Windows API 甚至 MFC 都一无所知。
当出现问题(文件名字符串中的非法字符)时,我会弹出一个错误窗口,我希望错误框是模态的。
我一直想不通为什么它在访问 doModal 时会崩溃。
这是我认为可以解决此问题的代码。此代码位于主窗口中按钮的事件处理程序中。
CDialog *BadFileD = new CDialog();
BadFileD->Create(IDD_STATUS, this);
BadFileD->DoModal();
我是不是有点智障了?
最佳答案
MFC对话框分为模态对话框和非模态对话框两种模式。
(1)模态对话框的使用:
CDialog dlg;
dlg.DoModal();
(2) 无模式对话框的使用:
CMyDialog *pDlg = new CMyDialog();
pDlg->Create(ID_DLG, this);
pDlg->ShowWindows(SW_SHOW);
如您所见,我们需要一个新指针,但不要删除它。因此,您需要在我们的 CMyDialog
类中执行以下操作:
- 在
OnOk()
和OnCancel()
中添加DestroyWindow()
方法。 - 在
PostNcDestroy()
方法中添加“delete this;
”。
如果不这样做,您的代码可能会导致内存泄漏。 BadFileD
是类成员,您在析构函数中将其删除。我建议使用无模式对话框。
关于c++ - MFC DoModal 对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6528694/