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

How to close the main window in MFC dialog-based application

本文关键字:应用程序 窗口 对话框 MFC      更新时间:2023-10-16

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

尤金。

试试这个:

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

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

这取决于您希望在关闭时进行什么处理。如果您只想终止消息循环而不进行任何进一步处理,则可以调用PostQuitMessage( exitCode )exitCode将作为进程的退出码存储。

如果你想调用OK/Cancel处理程序,你必须分别调用OnOK()OnCancel()OnOK()的默认实现将尝试保存和验证对话框数据,并在成功执行时调用EndDialog( IDOK )来终止消息循环。OnCancel()的默认实现只调用EndDialog( IDCANCEL )。它们都不允许您为进程指定退出代码。如果您已经覆盖了这些成员函数中的任何一个,则需要在执行专门化代码后调用基类实现,除非您希望防止关机。

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