关闭程序

netgobin 2001-07-07 12:43:13
我知道这个问题很傻。可我真的不懂。
如何点击一个MenuItem来关闭程序。我用的是SendMessage(WM_QUIT,0,0);应该有别的方法吧?MFC APPWIZARD提供的菜单里File->Exit项我没找到对应代码,它是如何工作的?
...全文
252 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
depuw 2001-07-07
  • 打赏
  • 举报
回复
向窗口发送 WM_CLOSE消息,调用 CWnd::OnClose成员函数.允许对用户提示

是否保存修改过的数据.

Example: AfxGetMainWindow()->SendMessage(WM_CLOSE);

还可以创建一个自定义的函数 Terminate Window

void Terminate Window(LPCSTR pCaption)

{

CWnd *pWnd=Cwnd::FindWindow(NULL,pCaption);

if (pWnd)

pWnd ->SendMessage(WM_CLOSE);

}

说明: FindWindow函数不是提倡的做法,因为它无法处理标题栏自动改变,比如我们要检测 Notepad是不是已运行而事先不知道Notepad的标题栏,这时 FindWindow就无能为力了,可以通过枚举 windows任务列表的办法来实现。 在 机械出版社"Windows 95 API开发人员指南"一书有比较详细的介绍,

还可以用C语言的函数exit等方法!
sunyanbiao_12 2001-07-07
  • 打赏
  • 举报
回复
PostQuitMessage(0)
nustchen 2001-07-07
  • 打赏
  • 举报
回复
楼上的很对,就把WM_QUIT改成WM_CLOSE就行了。
azuo_lee 2001-07-07
  • 打赏
  • 举报
回复
File->Exit菜单项对应的消息处理函数是CWinApp::OnAppExit,该函数主要是向主窗口发送一个WM_CLOSE消息,此消息由CFrameWnd::OnClose来处理,做一些类似于提示存盘之类的例行工作,最后调用DestroyWindow销毁窗口,发送WM_QUIT结束主消息循环,结束程序。
如果你想用一个菜单项来结束程序,MFC建议的做法是将该菜单项的ID定义为ID_APP_EXIT,这样程序的结束工作将由应用程序框架自动来完成,而不需要你再添加额外的代码。

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧