在InitInstance()
在InitInstance()中退出应用程序:从InitInstance()返回FALSE.
在主消息循环中
这是另一个故事,但如果您已经在消息循环中:关闭应用程序的标准方法是退出消息循环:
PostQuitMessage(0),顾名思义,发布一个WM_QUIT消息.消息循环通过退出循环并关闭程序来做出响应.
但是您不应该简单地做到这一点:您应该关闭应用程序中打开的窗口.
假设你只有你的主窗口,你应该通过调用来消灭它
m_pMainWindow->DestroyWindow();
MFC会对您的PostQuitMessage()做出反应,因此退出主消息循环并关闭您的应用程序.
更好的是,您应该发布一个WM_CLOSE,让您的主窗口正常关闭.它可能例如决定保存当前文档.当心:标准OnClose()处理程序可能会提示用户保存脏文档.用户甚至可以使用此提示取消关闭操作(保存文档?是,否,取消).
销毁主窗口将会发送WM_DESTROY消息给它. MFC通过调用PostQuitMessage(0)来退出消息泵. (实际上,MFC从OnNcDestroy()发起呼叫,因为WM_NCDESTROY是窗口接收到的绝对最后一个消息)
基于对话框的应用
调用EndDialog(-1); //或者用IDCANCEL替换-1,无论如何
你可能知道这个电话会关闭对话框.
请注意,基于对话框的应用程序的主对话框在InitInstance()中执行.关闭对话框将简单地退出InitInstance(),它在这样的项目中总是返回FALSE.