首页 > 试题广场 >

WM_QUIT消息的用途是什么?一个普通的Windows窗口

[问答题]
WM_QUIT消息的用途是什么?一个普通的Windows窗口能收到的最后一条消息是什么?

图1 窗口的生命周期
如上图所示:当使用者按下菜单中的close命令项,系统送出WM_ClOSE,通常程序
的窗口函数不拦截此消息,于是DefWindowProc处理它; DefWindowProc 收到WM_CLOSE后,调用 DestroyWindow 把窗口清除,DestroyWindow本身又会送出WM_DESTROY;程序对WM_DESTROY的标准反应是调用PostQuitMessage,而 PostQuitMessage 没有什么其它动作,就只送出WM_QUIT消息,准备让消息循环中的GetMessage取得,结束消息循环。GetMessage从消息序列中抓取到WM_QUIT后,GetMessage会传回0而结束while循环,进而结束整个程序。

因此一个普通窗口能接收到的最后一条消息应该是WM_QUIT.

编辑于 2015-06-03 21:29:29 回复(2)
    WM_QUIT通知程序退出,一般情况下在主线程中会有一个循环如下:
    while(GetMessage(......))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    如果GetMessage获得的是WM_QUIT消息,GetMessage便会返回FALSE,导致while循环退出,一般情况下,程序也会退出。windows窗口不会受到WM_QUIT消息。
     
    普通Windows窗口能收到的最后一条消息时WM_DESTROY。
发表于 2015-07-03 10:22:43 回复(0)
最后一条消息是WM_QUIT。
具体细节参考:http://blog.csdn.net/guzhou_diaoke/article/details/8155171
编辑于 2015-09-04 17:00:05 回复(0)
WM_QUIT  关闭消息循环,结束程序运行

WM_DESTORY
发表于 2015-04-01 18:51:20 回复(0)
WM_QUIT  关闭消息循环,结束程序运行
WM_CLOSE-> WM_DESTROY-> WM_QUIT      因此一个普通窗口能接收到的最后一条消息应该是WM_QUIT.
发表于 2015-09-06 09:27:42 回复(0)
WM_DESTROY
发表于 2015-04-24 22:32:22 回复(0)