我做一个单文档应用程序,在其CMainFrame::OnCreate函数中调用一个对话框。
CWelcomDlg welcom;
welcom.DoModal();
我想在对话框中按一个按钮就把整个应用程序给关了,想通过发送消息的方式关闭,但我尝试
CFrameWnd* parent=this->GetParentFrame();
::SendMessage(parent->GetSafeHwnd(),WM_CLOSE,0,0);
和
CWnd* parent=this->GetParent();
::SendMessage(parent->GetSafeHwnd(),WM_CLOSE,0,0);
都不行,应用程序能够被关闭,但会出现异常。
请问各位高手如何才行。谢谢!
CWelcomDlg welcom;
welcom.DoModal();
我想在对话框中按一个按钮就把整个应用程序给关了,想通过发送消息的方式关闭,但我尝试
CFrameWnd* parent=this->GetParentFrame();
::SendMessage(parent->GetSafeHwnd(),WM_CLOSE,0,0);
和
CWnd* parent=this->GetParent();
::SendMessage(parent->GetSafeHwnd(),WM_CLOSE,0,0);
都不行,应用程序能够被关闭,但会出现异常。
请问各位高手如何才行。谢谢!
那你不应该在CMainFrame中进行处理。应该在C***App应用程序类的OnInitInstance函数中进行系统进入之前的校验工作。比如你这里的欢迎界面。如果认为用户无权进入系统,你直接return FALSE就可以了。不需要这么麻烦。
CWnd* parent=this->GetParent();
::SendMessage(parent->GetSafeHwnd(),WM_CLOSE,0,0);
INT_PTR nRet = -1;
nRet = welcom.DoModal(); // Handle the return value from DoModal
switch ( nRet )
{
case -1:
AfxMessageBox("Dialog box could not be created!");
break;
case IDABORT:
// Do something
break;
case IDOK:
// Do something
break;
case IDCANCEL:
// Do something
break;
default:
// Do something
break;
};