我在模态对话框中,在模式对话框结束时,我想退出应用程序。
ASSERT(AfxGetApp()->m_pMainWnd != NULL);
PostMessage(WM_CLOSE, 0, 0);
但是,获得以下异常会形成模式的私有成员变量的成员方法:
Exception thrown: read access violation.
有没有办法安全关闭ModalDialog的应用程序?
答案 0 :(得分:2)
为了显示对话框,您可以从应用程序中调用DoModal()。
您可以在调用DoModal();
之后退出应用程序dlg.DoModal();
//write code to exit application
您可以检查DoModal()的返回值并相应地退出应用程序。
答案 1 :(得分:0)
在您的CYouModal :: OnDestroy()处理程序中,使用WM_CLOSE id为主窗口调用PostMessage。你试过吗?
答案 2 :(得分:0)
您询问如何从对话框中发布WM_CLOSE以结束您的应用程序。 如果这种方式可以安全地关闭ModalDialog的应用程序。
是的,但您必须在关闭对话框之前将WM_CLOSE发布到MainWnd。 MainWnd必须处理应用程序的退出。
BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)
ON_BN_CLICKED(IDOK, &CAboutDlg::OnBnClickedOk)
END_MESSAGE_MAP()
void CAboutDlg::OnBnClickedOk()
{
ASSERT(AfxGetApp()->m_pMainWnd != NULL);
AfxGetApp()->m_pMainWnd->PostMessage(WM_CLOSE, 0, 0);
CDialogEx::OnOK();
}