MFC学习笔记之:程序关闭过程的函数响应顺序详解

当用户选择关闭窗口时,MFC应用程序会经历一系列函数响应,包括WM_SYSCOMMAND、WM_CLOSE、WM_DESTROY和WM_QUIT消息。本文详细解析了这个过程中每个消息的作用,以及默认处理方式如何导致窗口消失并最终结束应用。

用户单击关闭按钮(标题栏最右边)或者用鼠标或键盘选择系统菜单的“关闭”选项,直到窗口消失,应用程序结束。这期间到底发生了什么呢?这曾经是我百思不得其解的问题,我想也会有很多人和我一样会碰到这个问题。所以我要把我的一些学习心得写出来,与大家共享: 1、首先会产生一个WM_SYSCOMMAND消息,如果程序员没有对此消息进行拦截,则由缺省的窗口函数DefWindowProc进行处理,如果表达式(LOWORD(wParam)&0xFFF0)==SC_CLOSE 成立,DefWindowProc发出一个WM_CLOSE消息。 2、同样,如果程序员没有对WM_CLOSE消息进行拦截,则还是由DefWindowProc进行处理,这次,她只简单的调用DestroyWindow函数,DestroyWindow先把窗口破坏掉,使用户看不到窗口。但是窗口破坏后,应用程序并没有结束,于是DestroyWindow再接再励,送出了一个WM_DESTROY消息。 3、这一次,WM_DESTROY被载获了,通常是会有这样的句子: case WM_DESTROY: PostQuitMessage(0); ... 这里PostQuitMessage函数很简单的发送一个WM_QUIT消息来响应WM_DESTROY 4、WM_QUIT消息非常特殊,她使GetMessage函数返回0,从而结束了消息循环, 应用程序从此结束。 下面我给出完整的证明程序,请大家一试:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值