CSDN博客

img denycoolen1982

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

发表于2008/10/3 11:24:00  342人阅读

       这三个消息一直让我很头疼,不明白为什么要这么多消息才能结束一个程序,今天认真看了《深入浅出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是为了结束消息循环

0 0

相关博文

我的热门文章

img
取 消
img