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