1

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

尤金。

4

3 回答 3

8

尝试这个:

ASSERT( AfxGetMainWnd()!=NULL );
AfxGetMainWnd()->SendMessage(WM_CLOSE);
于 2012-12-29T17:54:12.793 回答
4

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

于 2012-12-29T17:52:46.070 回答
0

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

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

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

于 2012-12-29T20:42:24.937 回答