当我想关闭应用程序本身时,有人可以回答如何关闭基于MFC对话框的应用程序中的主窗口吗?该应用程序是在MS VS 2010中创建的。 非常感谢你提前。
尤金。
答案 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() );
获取指向主对话框的指针。