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

C++ 如何在基于MFC对话框的应用程序中关闭主窗口,c++,mfc,C++,Mfc,当我想关闭应用程序时,有人能回答如何关闭基于MFC对话框的应用程序中的主窗口吗?该应用程序是在MS VS 2010中创建的。 事先非常感谢 Eugene.您可以将WM\u发送到对话框hwnd附近。PostQuitMessage还应允许结束应用程序执行。您可以在对话框hwnd附近发送WM\U。PostQuitMessage还应允许结束应用程序执行。尝试以下操作: ASSERT( AfxGetMainWnd()!=NULL ); AfxGetMainWnd()->SendMessage(WM_

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


Eugene.

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

您可以在对话框hwnd附近发送WM\U。PostQuitMessage还应允许结束应用程序执行。

尝试以下操作:

ASSERT( AfxGetMainWnd()!=NULL );
AfxGetMainWnd()->SendMessage(WM_CLOSE);
试试这个:

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

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

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


请记住,
OnOK()
OnCancel()
CDialog[Ex]
的受保护成员,不能从外部直接访问。如果需要从dialog类外部调用其中一个,则必须公开重写它们。您可以使用
CMyDialog*pDlg=dynamic\u cast(AfxGetMainWnd())获取指向主对话框的指针

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

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


请记住,
OnOK()
OnCancel()
CDialog[Ex]
的受保护成员,不能从外部直接访问。如果需要从dialog类外部调用其中一个,则必须公开重写它们。您可以使用
CMyDialog*pDlg=dynamic\u cast(AfxGetMainWnd())获取指向主对话框的指针

但是是否存在用于关闭窗口的CWnd类的成员函数?CWnd::SendMessage将调用::SendMessage,其中hwnd从hwnd附加到此CWnd。实际上,CWnd是WinAPI的一个薄包装,它的大多数(如果不是全部)函数使用SendMessage将其工作委托给WinAPI,但是是否存在用于关闭窗口的CWnd类的成员函数?CWnd::SendMessage将调用::SendMessage,其中hwnd来自附加到此CWnd的hwnd。实际上,CWnd是WinAPI的一个薄包装器,它的大多数(如果不是全部的话)函数使用SendMessage将其工作委托给WinAPI。我希望从应用程序退出到操作系统。因此,我认为PostQuitMessage()将满足这一需求。我试试。PostQuitMessage()很好!它符合需要,解决了我的问题!谢谢。@ USE1687.3考虑阅读以下常见问题:我想退出应用程序到操作系统。因此,我认为PostQuitMessage()将满足这一需求。我试试。PostQuitMessage()很好!它符合需要,解决了我的问题!谢谢。@ USE1687.3考虑阅读以下常见问题: