青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

天下

記錄修行的印記

窗口銷毀的相關(guān)函數(shù)與消息

窗口銷毀的相關(guān)函數(shù)與消息
DestroyWindow函數(shù)
DestroyWindow銷毀窗口的正牌函數(shù)。
DestroyWindows的MSDN說明如下:
The DestroyWindow function destroys the specified window. The function sends WM_DESTROY and WM_NCDESTROY messages to the window to deactivate it and remove the keyboard focus from it. The function also destroys the window's menu, flushes the thread message queue, destroys timers, removes clipboard ownership, and breaks the clipboard viewer chain (if the window is at the top of the viewer chain).
If the specified window is a parent or owner window, DestroyWindow automatically destroys the associated child or owned windows when it destroys the parent or owner window. The function first destroys child or owned windows, and then it destroys the parent or owner window.
DestroyWindow also destroys modeless dialog boxes created by the CreateDialog function.
A thread cannot use DestroyWindow to destroy a window created by a different thread.
If the window being destroyed is a child window that does not have the WS_EX_NOPARENTNOTIFY style, a WM_PARENTNOTIFY message is sent to the parent.
DestroyWindow的處理過程總結(jié)要點(diǎn)如下: 
1. 向父窗口發(fā)送WM_PARENTNOTIFY消息(僅當(dāng)窗口具有WS_EX_NOPARENTNOTIFY樣式); 
2. 向窗口發(fā)送WM_DESTROY消息; 
3. 使窗口轉(zhuǎn)入非活動狀態(tài),移除鍵盤焦點(diǎn); 
4. 銷毀子窗口(應(yīng)該是通過遞歸調(diào)用DestroyWindow完成); 
5. 銷毀目標(biāo)窗口資源:銷毀菜單,清空線程的消息隊(duì)列,銷毀與窗口過程相關(guān)的定時(shí)器,解除窗口對剪貼板的擁有權(quán),打斷剪貼板器的查看鏈; 
6. 向窗口發(fā)送WM_NCDESTROY消息;
上述條目大致從前往后執(zhí)行(1、2、3的順序不一定,5、6的順序不一定)。依據(jù)是: 
1. 根據(jù)WM_PARENTNOTIFY說明:銷毀窗口時(shí),系統(tǒng)在任何銷毀窗口的操作執(zhí)行前發(fā)送WM_PARENTNOTIFY至父窗口; 
2. 根據(jù)WM_DESTROY說明:此消息先被發(fā)送至目標(biāo)窗口,然后發(fā)送給目標(biāo)窗口的所有子窗口,處理此消息時(shí),可以假定所有子窗口還存在著; 
3. 根據(jù)DestroyWindow說明:函數(shù)先銷毀子窗口及所擁有的窗口,然后銷毀目標(biāo)窗口; 
4. 根據(jù)WM_NCDESTROY說明:與WM_DESTROY相反的是,此消息在所有子窗口銷毀之后發(fā)送; 沒有去看匯編代碼,只是根據(jù)各個(gè)MSDN說明來大致推測的,基本夠用了吧。
根據(jù)MSDN說明,不能在非創(chuàng)建線程上調(diào)用DestroyWindow;若要在其它線程上關(guān)閉窗口,不可以直接調(diào)用DestroyWindow(錯誤"拒絕訪問"),也不可以只發(fā)送WM_DESTROY,因?yàn)镈estroyWindow才能完整的關(guān)閉窗口,WM_DESTROY消息只是關(guān)閉流程的一部分,甚至是最"無用"的一部分--WM_DESTROY只是用戶響應(yīng)的接口,而真正清理窗口的工作由DestroyWindow的其它部分完成。 
要在其它線程上關(guān)閉窗口,可以向窗口發(fā)送WM_CLOSE消息,若窗口過程未在WM_CLOSE的處理中取消關(guān)閉操作,則DefWindowProc會默認(rèn)調(diào)用DestroyWindow(彼時(shí)自然是在窗口的創(chuàng)建線程上)。
WM_CLOSE消息
WM_CLOSE的MSDN說明如下:
An application can prompt the user for confirmation, prior to destroying a window, by processing the WM_CLOSE message and calling the 
DestroyWindow function only if the user confirms the choice.
By default, the DefWindowProc function calls the DestroyWindow function to destroy the window.
WM_CLOSE消息提供取消關(guān)閉窗口操作的接口,也可以作為窗口關(guān)閉的關(guān)聯(lián)處理的統(tǒng)一入口。點(diǎn)擊窗口右上角的關(guān)閉按鈕將導(dǎo)致窗口收到WM_CLOSE消息,一般情況下,菜單中的Exit項(xiàng)的處理代碼中也應(yīng)向窗口發(fā)送WM_CLOSE消息,這樣可以使無論何種方式觸發(fā)的窗口關(guān)閉操作,其程序流均會流入WM_CLOSE消息的處理過程。在WM_CLOSE中可以對程序狀態(tài)進(jìn)行確認(rèn),自動或由用戶確認(rèn)是否取消關(guān)閉操作。 
與接下來的其它消息相比,WM_CLOSE的特殊之處在于它發(fā)生在銷毀過程啟動之前。用戶處理完WM_CLOSE消息后,如未取消,則DefWindowProc將調(diào)用DestroyWindow來關(guān)閉窗口,一旦進(jìn)入DestroyWindow,則關(guān)閉過程將不可逆轉(zhuǎn)。
WM_DESTROY消息
WM_DESTROY的MSDN說明如下:
The WM_DESTROY message is sent when a window is being destroyed. It is sent to the window procedure of the window being destroyed after the window is removed from the screen.
This message is sent first to the window being destroyed and then to the child windows (if any) as they are destroyed. During the processing of the message, it can be assumed that all child windows still exist.
A window receives this message through its WindowProc function.
If the window being destroyed is part of the clipboard viewer chain (set by calling the SetClipboardViewer function), the window must remove itself from the chain by processing the ChangeClipboardChain function before returning from the WM_DESTROY message.
最后一句值得注意,不過對剪貼板涉獵不多,暫且不究。
WM_PARENTNOTIFY消息
WM_PARENTNOTIFY的MSDN說明如下:
The WM_PARENTNOTIFY message is sent to the parent of a child window when the child window is created or destroyed, or when the user clicks a mouse button while the cursor is over the child window. When the child window is being created, the system sends WM_PARENTNOTIFY just before the CreateWindow or CreateWindowEx function that creates the window returns. When the child window is being destroyed, the system sends the message before any processing to destroy the window takes place.
A window receives this message through its WindowProc function.
WM_NCDESTROY消息
WM_NCDESTROY的MSDN說明如下:
The WM_NCDESTROY message informs a window that its nonclient area is being destroyed. The DestroyWindow function sends the WM_NCDESTROY message to the window following the WM_DESTROY message. WM_DESTROY is used to free the allocated memory object associated with the window. The WM_NCDESTROY message is sent after the child windows have been destroyed. In contrast, WM_DESTROY is sent before the child windows are destroyed. A window receives this message through its WindowProc function. This message frees any memory internally allocated for the window.
關(guān)于WM_DESTROY與WM_NCDESTROY,從各種說明可以看出,一個(gè)大約充當(dāng)關(guān)閉操作啟動時(shí)的通知接口,一個(gè)大約充當(dāng)關(guān)閉操作完成時(shí)的通知接口。這也是我認(rèn)為在DestroyWindow的處理流程中,第6條在第5條之后的原因。 
另外,說明中有個(gè)值得一提的地方在于:WM_DESTROY用于釋放關(guān)聯(lián)到(associated to)窗口的已分配內(nèi)存對象,WM_NCDESTROY用于釋放內(nèi)部為窗口分配的(internally allocated for)內(nèi)存。 可以想象,后者應(yīng)當(dāng)指窗口的內(nèi)核數(shù)據(jù),但前者則有各種可能,菜單資源?GDI資源?異或是子窗口資源?這個(gè)就不好說了。 而且,根據(jù)這兩句話的表述,似乎這兩個(gè)清理操作是在消息的處理過程中發(fā)生的,然而顯然又不是由用戶來完成的工作,那么就應(yīng)當(dāng)是在DefWindowProc中完成的了。為什么不直接拿到Destroywindow中來執(zhí)行呢?
ActiveX控件的銷毀
銷毀控件的最好方法是銷毀宿主窗口。可以通過調(diào)用 CWindow::DestroyWindow 或 DestroyWindow API 顯式地進(jìn)行銷毀,或者讓宿主窗口的父級窗口的毀壞導(dǎo)致其死亡,從而隱式地進(jìn)行銷毀。這些方法的任何一種都將安全地銷毀寄宿的控件。請注意,CAxWindow 對象的毀壞"不會"導(dǎo)致基礎(chǔ)"AtlAxWin7"窗口的毀壞。 
來自:http://technet.microsoft.com/zh-cn/query/cc468138

posted on 2015-08-01 14:24 天下 閱讀(621) 評論(0)  編輯 收藏 引用 所屬分類: Win32

<2012年8月>
2930311234
567891011
12131415161718
19202122232425
2627282930311
2345678

導(dǎo)航

統(tǒng)計(jì)

常用鏈接

留言簿(4)

隨筆分類(378)

隨筆檔案(329)

鏈接

最新隨筆

搜索

最新評論

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲欧洲99久久| 亚洲欧美一区二区三区久久| 免费在线成人av| 久久一区二区三区四区| 国产伦精品一区| 欧美人与性动交cc0o| 亚洲欧美在线观看| 久久国产精品一区二区三区四区 | 欧美中文字幕精品| 久久综合婷婷| 欧美三日本三级少妇三99| 国产精品网站在线播放| 国产日韩欧美一区| 亚洲国产欧美一区| 亚洲午夜小视频| 久久久久久国产精品一区| 欧美顶级大胆免费视频| 亚洲视频专区在线| 蜜臀99久久精品久久久久久软件| 欧美日韩日本视频| 精品999在线播放| 亚洲一区二区免费看| 久久综合精品国产一区二区三区| 亚洲国产天堂久久综合| 亚洲视频一二| 免费在线观看日韩欧美| 国产伦理精品不卡| 日韩一级在线| 久久影视精品| 亚洲无线视频| 欧美激情一二三区| 在线电影一区| 性色av一区二区三区在线观看| 女女同性精品视频| 亚洲欧美激情精品一区二区| 欧美丰满高潮xxxx喷水动漫| 国产亚洲日本欧美韩国| 亚洲午夜视频在线| 欧美激情四色| 久久天天躁夜夜躁狠狠躁2022| 国产精品区一区二区三区| 亚洲精选91| 老司机一区二区| 午夜精品一区二区三区电影天堂| 欧美精品一区在线发布| 亚洲电影免费在线| 久久久久免费| 欧美一区二区黄| 国产欧美亚洲日本| 午夜久久久久久| 宅男66日本亚洲欧美视频| 欧美激情偷拍| 妖精成人www高清在线观看| 欧美大片一区二区三区| 久久久噜噜噜久久人人看| 国产综合视频| 久久午夜电影| 久久久999精品| 好吊色欧美一区二区三区四区 | 性欧美video另类hd性玩具| 欧美成人精品不卡视频在线观看| 国产一区二区三区久久久久久久久| 亚洲一级在线| 亚洲资源av| 国产一区二区毛片| 久久综合伊人77777麻豆| 久久国产精品99国产| 欲香欲色天天天综合和网| 久久免费精品日本久久中文字幕| 欧美在线你懂的| 在线看视频不卡| 亚洲二区在线观看| 欧美日韩久久久久久| 新67194成人永久网站| 欧美一级黄色录像| 亚洲国产日韩欧美在线动漫| 亚洲黄色成人| 国产精品色网| 免费观看亚洲视频大全| 欧美精品久久久久久久久久| 亚洲欧美变态国产另类| 欧美在线观看日本一区| 亚洲三级视频在线观看| 亚洲视频视频在线| 一区二区在线视频播放| 日韩视频中文字幕| 国产亚洲一区二区三区| 亚洲福利视频网| 国产精品久久久久久久久久久久 | 欧美精品一区二区三区蜜桃| 亚洲欧美www| 另类亚洲自拍| 亚洲欧洲99久久| 久久免费视频网站| 亚洲尤物视频网| 久久亚洲不卡| 校园春色国产精品| 免费在线视频一区| 欧美成人r级一区二区三区| 一区二区三区国产精华| 午夜精品久久久久久久99樱桃| 亚洲高清色综合| 亚洲女同同性videoxma| 亚洲国产黄色片| 亚洲欧美精品| 在线一区亚洲| 欧美~级网站不卡| 久久av在线看| 欧美日韩一区二区精品| 免费欧美在线视频| 国产精品亚洲综合久久| 亚洲激情网址| 在线观看日韩av电影| 午夜精品99久久免费| 在线一区二区三区做爰视频网站| 久久久一区二区| 久久精品国产2020观看福利| 欧美福利电影在线观看| 久久久人成影片一区二区三区| 亚洲国产一区在线| 亚洲永久网站| 亚洲一区二区三区欧美| 欧美激情视频网站| 欧美成人午夜| 在线免费高清一区二区三区| 午夜亚洲视频| 欧美一区二区三区四区视频 | 香蕉久久一区二区不卡无毒影院 | 国产精品免费电影| 亚洲日本理论电影| 亚洲精品久久在线| 免费一区视频| 亚洲欧洲日韩综合二区| 亚洲日韩第九十九页| 嫩草国产精品入口| 亚洲国产精品久久久久秋霞蜜臀| 亚洲国产另类 国产精品国产免费| 久久久久久网站| 欧美1区视频| 亚洲精品免费在线播放| 欧美精品网站| 亚洲视频在线二区| 欧美在线啊v一区| 国产综合精品| 久久久亚洲人| 亚洲国产精品一区| 一区二区日韩精品| 国产精品美女一区二区在线观看| 亚洲一级电影| 久久综合中文| 亚洲精品视频在线观看网站| 欧美日韩理论| 香蕉久久精品日日躁夜夜躁| 免费观看欧美在线视频的网站| 亚洲日本成人网| 欧美无砖砖区免费| 欧美在线视频一区二区| 欧美高清在线播放| 亚洲尤物在线视频观看| 国产亚洲欧美一区| 欧美jizzhd精品欧美巨大免费| 亚洲乱码视频| 久久久久一区二区三区| 亚洲精品久久视频| 国产女主播一区二区| 久久久综合精品| 一本大道av伊人久久综合| 久久久国产视频91| 一本色道**综合亚洲精品蜜桃冫| 国产精品一区二区女厕厕| 久久人人爽人人| 国产精品99久久久久久久女警 | 久久国产福利| 亚洲欧洲一区二区在线观看| 欧美一级日韩一级| 日韩午夜高潮| 国产一区二区三区直播精品电影| 欧美成人69| 欧美一级片久久久久久久| 亚洲国产精品女人久久久| 一区二区三区四区五区在线| 欧美激情日韩| 欧美一区二区三区精品| 亚洲人成啪啪网站| 国产日产欧美一区| 欧美日韩免费一区二区三区| 久久露脸国产精品| 亚洲欧美日韩国产成人精品影院| 亚洲国产欧洲综合997久久| 久久精品色图| 午夜久久美女| 一区二区三区日韩欧美| 亚洲大片精品永久免费| 国产麻豆成人精品| 欧美性猛交一区二区三区精品| 免费中文日韩| 久久综合婷婷| 久久视频一区二区| 欧美中日韩免费视频| 亚洲欧美国产精品桃花|