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

原创 2008年10月03日 11:24:00

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

WM_CLOSE WM_QUIT WM_DESTROY 三者的区别

一直以来,我都不是很明白这三个的区别,今天看了一写文章,才明白过来,一下是转载的文字:有三个消息看起来差不多,都是处理关闭的事情的。它们是WM_DESTROY,WM_CLOSE,和WM_QUIT。它们...
  • tunnel115
  • tunnel115
  • 2009年09月12日 21:17
  • 7105

WM_DESTROY ,WM_CLOSE ,WM_QUIT 的区别

WM_QUIT,WM_CLOSE,WM_DESTROY      WM_DESTROY 是关闭程序      WM_CLOSE 是关闭窗口      WM_QUIT 是关闭消息环...
  • u011045817
  • u011045817
  • 2014年01月25日 21:11
  • 471

当一个窗口关闭时WM_CLOSE,WM_DESTROY,WM_QUIT

当一个窗口关闭时WM_CLOSE,WM_DESTROY,WM_QUIT    转载▼   一般是响应WM_CLOSE,调用DestroyWindow() ...
  • u011559491
  • u011559491
  • 2015年06月16日 13:42
  • 1484

WM_CLOSE、WM_DESTROY、WM_QUIT及各种消息投递函数详解

本文对WM_CLOSE、WM_DESTROY、WM_QUIT及各种消息投递函数的功能及区别做出了分析比对,有助于读者更好的对消息投递函数加以理解。详情如下: 一、WM_CLOSE、WM_DESTRO...
  • u012372584
  • u012372584
  • 2016年02月03日 16:39
  • 532

阻止窗口关闭 WM_CLOSE,WM_DESTROY,WM_QUIT

// DEMO3_7.CPP - WM_CLOSE demo// INCLUDES ///////////////////////////////////////////////#define WIN...
  • wenzhoufeng
  • wenzhoufeng
  • 2007年11月23日 12:43
  • 4290

WM_CLOSE WM_DESTROY WM_QUIT 区别

在发送 WM_QUIT消息时,要使用PostMessage发送,否则,窗口已经关闭,但任务管理器中进程还存在。 可以通过 pDlg->PostMessage(WM_QUIT);或 DWOR...
  • Howard_Liu1314
  • Howard_Liu1314
  • 2013年08月16日 15:38
  • 554

WM_CLOSE, WM_DESTROY, WM_QUIT

WM_DESTROY 是关闭程序      WM_CLOSE 是关闭窗口      WM_QUIT 是关闭消息环              WM_CLOSE和WM_DESTROY同属窗...
  • guanghuatan
  • guanghuatan
  • 2012年10月09日 14:40
  • 263

WM_DESTROY、WM_CLOSE和WM_QUIT

一、理解之一WM_CLOSE和WM_DESTROY同属窗口消息,WM_QUIT则不在窗口消息之列。三者先后执行顺序是WM_CLOSE、WM_DESTROY、WM_QUIT,但需要注意的是MFC窗口默认...
  • bookish_2010_prj
  • bookish_2010_prj
  • 2010年04月14日 09:13
  • 900

WM_QUIT,WM_CLOSE,WM_DESTROY .

本文转自:http://blog.csdn.net/fage87295970/article/details/5086514      WM_DESTROY 是关闭程序      WM_CLOS...
  • iamhycljc
  • iamhycljc
  • 2012年03月29日 14:48
  • 704

WM_QUIT,WM_CLOSE,WM_DESTROY

WM_DESTROY 是关闭程序  WM_CLOSE 是关闭窗口 WM_QUIT 是关闭消息环            WM_CLOSE和WM_DESTROY同属窗口消息,WM_QUIT则不在...
  • Plutus_Lee
  • Plutus_Lee
  • 2013年11月23日 17:15
  • 888
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章: 终于想明白了(wm_destroy、wm_close、wm_quit)
举报原因:
原因补充:

(最多只允许输入30个字)