当我想关闭应用程序本身时,任何人都可以回答如何关闭基于 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() );
。