关闭窗口引发消息的执行顺序

WM_DESTROY 是关闭程序的
WM_CLOSE 是关闭窗口的
WM_QUIT 是关闭消息环的

 

以下说明程序是如何退出的:
􀂄 使用者选按,于是发出 WM_CLOSE。
􀂄 CMyFrameWnd 并没有设置WM_CLOSE 处理常式,于是交给预设之处理函数。
􀂄 预设函数对于WM_CLOSE 的处理方式是呼叫 ::DestroyWindow, 并因而发出WM_DESTROY。
􀂄 预设之WM_DESTROY 处理方式是呼叫::PostQuitMessage,因此发出WM_QUIT。
􀂄 CWinApp::Run 收到WM_QUIT 后会结束其内部之讯息回路, 然后呼叫ExitInstance,这是CWinApp 的一个虚拟函数。
􀂄 如果CMyWinApp 改写了ExitInstance , 那么CWinApp::Run 所呼叫的就是CMyWinApp::ExitInstance,否则就是 CWinApp::ExitInstance。
􀂄 最后回到 AfxWinMain,执行 AfxWinTerm,结束程序。

 

顺序:WM_CLOSE --> WM_DESTROY --> WM_QUIT。

 

L _T TEXT区别

L的作用:是将ANSII字符串转换成Unicode字符串,也就是每个字符占用两个字节。(必转)

 _T宏可以把一个引号引起来的字符串,根据你的环境设置,使得编译器会根据编译目标环境选择合适的(Unicode还是ANSI)字符处理方式。(有可能转)

TEXT功能与_T相似,在 ASCII 模式下,它们被忽略,也就是说被预处理器删除掉,但是如果定义了UNICODE, 则它们会将常量字符串转换成等价的 UNICODE。(有可能转)

posted @ 2013-08-26 17:16  hometown  阅读(295)  评论(0)    收藏  举报