如何在MFC基于对话框的应用程序中关闭主窗口

时间:2012-12-29 17:46:36

标签: c++ mfc

当我想关闭应用程序本身时,有人可以回答如何关闭基于MFC对话框的应用程序中的主窗口吗?该应用程序是在MS VS 2010中创建的。 非常感谢你提前。

尤金。

3 个答案:

答案 0 :(得分:8)

试试这个:

ASSERT( AfxGetMainWnd()!=NULL );
AfxGetMainWnd()->SendMessage(WM_CLOSE);

答案 1 :(得分:4)

您可以将WM_CLOSE发送到对话框hwnd。 PostQuitMessage还应允许结束应用程序执行。

答案 2 :(得分:0)

这取决于您希望在关机过程中进行的处理。如果您只想终止消息循环而无需进一步处理,则可以调用PostQuitMessage( exitCode )exitCode将存储为流程的退出代码。

如果要调用确定/取消处理程序,则必须分别调用OnOK()OnCancel()OnOK()的默认实现将尝试保存并验证对话框数据,并在成功执行时调用EndDialog( IDOK )以终止消息循环。 OnCancel()的默认实施只是调用EndDialog( IDCANCEL )。两者都不允许您为流程指定退出代码。如果您已覆盖其中任何一个成员函数,则需要在执行专用代码后调用基类实现,除非您希望阻止关闭。

请注意,OnOK()OnCancel()CDialog[Ex]的受保护成员,无法直接从外部访问。如果您需要从对话框类外部调用其中一个,则必须公开覆盖它们。您可以使用CMyDialog* pDlg = dynamic_cast< CMyDialog* >( AfxGetMainWnd() );获取指向主对话框的指针。