终于想明白了(wm_destroy、wm_close、wm_quit)

来源:互联网 发布:苹果mac系统修复教程 编辑:程序博客网 时间:2024/05/17 20:53

       这三个消息一直让我很头疼,不明白为什么要这么多消息才能结束一个程序,今天认真看了《深入浅出MFC》,理清思路,终于自认为是解决了!
       我理解的程序结束过程:

1、当按下Close按钮时,会激发消息WM_CLOSE,并通过消息循环,运行DefWindowProc

2、DefWindowProc则调用DestroyWindow使窗口在屏幕上消失

3、窗口消失的动作会激发消息WM_DESTROY的产生

4、此消息通过消息循环,又使case WM_DESTROY运行PostQuitMessage,并发送WM_QUIT消息给消息循环

5、WM_QUIT消息使GetMessage返回0值,即退出while循环,结束消息循环机制

6、至此,程序被完成结束任务

       也就是说,在这个过程中,之所以要用到三个消息,是因为需要考虑:windows中的任何改变都会激发消息,包括窗口的消失行为;只要有消息在,消息循环机制就不能结束;只有等程序的消息循环机制退出,相应的程序才算真正结束。

 

wm_close-->wm_destroy-->wm_quit

 

wm_close是为了响应按下Close按钮的动作

wm_destroy是为了响应窗口消失动作

wm_quit是为了结束消息循环

原创粉丝点击