VC中WM_CLOSE、WM_DESTROY、WM_QUIT消息出现顺序及调用方式.pdf

VC中WM_CLOSE、WM_DESTROY、WM_QUIT消息出现顺序及调用方式.pdf

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
VC中WM_CLOSE、WM_DESTROY、WM_QUIT消息出现顺序及调用方式

VC WM_CLOSE、WM_ DESTROY、WM_QUIT 消息出现顺序及调用方式 wxleasyland@ 2012.7 wxleasyland 试验: 一、VC 建的标准WIN32-HELLO WORLD 程序中, case WM_DESTROY: //PostQuitMessage(0);将这行屏蔽 则,点关闭,窗口关闭了,但是程序进程还在!要在任务管理器 止。 二、VC 建的标准WIN32-HELLO WORLD 程序中, 1. 在WndProc()中加上 case WM_CLOSE: WinExec(cmd /k echo WM_CLOSE: ,SW_SHOW); break ; 2. 按右上角的X、点图标\关闭、或者按ALT+F4,都只出现cmd 窗,不会关闭程序。 因为原来是执行 default: return DefW indowProc(hWnd, message, wParam, lParam); 即 DefW indowProc 来处理WM_CLOSE 消息。现在被case WM_CLOSE:拦截了。 3. 点菜单里的FILE\EXIT,则就是执行case WM_COMMAND: 里的case IDM_EXIT: DestroyWindow(hWnd); 了。 不会执行case WM_CLOSE: !!! DestroyWindow(hWnd); 会销毁窗口,同时发送WM_DESTROY 消息直接让WndProc()处理(不经过消 息队列)。 三、VC 建的标准WIN32-HELLO WORLD 程序中, 1. 在WndProc()中加上 case WM_CLOSE: WinExec(cmd /k echo WM_CLOSE: ,SW_SHOW); return DefWindowProc(hWnd, message, wParam, lParam); break ; case WM_DESTROY: WinExec(cmd /k echo WM_DESTROY: ,SW_SHOW); PostQuitMessage(0); break ; 2. 按右上角的X、点图标\关闭、或者按ALT+F4,会先出现WM_CLOSE,再出现WM_DESTROY。 3. 点菜单里的FILE\EXIT,则只出现WM_DESTROY。 四、VC 建的标准WIN32-HELLO WORLD 程序中,如果用PostQuitMessage(0); 则不出现WM_CLOSE 。 也 不会出现 M_DESTROY !!!!!!! 窗口会关闭,程序退出。 这应该是正 的,WM_QUIT 让GetMessage()为0,从而WinMain()退出,然后操作系统会自动去销 毁窗口。主程序已经没了,所以即使WM_DESTROY 出现了也没用。 经试,在PostQuitMessage(0);后面的语句会继续执行到完。PostQuitMessage 只是产生一个WM_QUIT 消息到消息队列 并马上返回。 所以标准WIN32 程序是: 按右上角的X-出现WM_CLOSE 销毁窗口-产生WM_DESTROY-运行PostQuitMessage-WinMain 退出 菜单点EXIT-出现WM_COMMAND 运行PostQuitMessage 五、在MFC 对话框程序中,试验,是: 1. 先WM_CLOSE (这时窗口仍在显示)-再WM_DESTROY (窗口已经消失)-OnDestroy()执行完后, 程序完全退出 2. WM_CLOSE 不一定会出现。WM_CLOSE 点右上角的X ,点图标\关闭,或者按ALT+F4,会出现。 点 OK 按钮、或者Cancle 按钮,或者用任务管理器强行中止,都不会出现。 3. WM_ DESTROY 点右上角的X ,点OK 按钮、或者Cancle 按钮,都会出现。而且晚于WM_CLOSE 出 现。 用任务管理器强行 止,则不会出现。 4. 如果在程序 按一个按钮,里有PostQuitMessage(0); 则不出现WM_CLO

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档