c语言mfc关闭程序函数,c++ 以编程方式退出MFC应用程序的正确方法是什么?

在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.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值