亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Windows對象、句柄與MFC對象

系統(tǒng) 3509 0

Windows對象、句柄與MFC對象

(2009-04-28 22:11:34)
  Windows對象是以句柄來標識的,對應的MFC類就是這些句柄的C++包裝。內存中的Windows對象一定有唯一的句柄來標識,但不一定有對應的MFC類對象在內存中。當需要獲取Windows對象的對應MFC類對象而內存中又沒有此對象時,系統(tǒng)會創(chuàng)建一個臨時MFC類對象返回給用戶,并在之后某個空閑時刻進行回收。
  Windows對象句柄及其對應的MFC類如下表所示:

HWND

CWnd 及派生類

HDC

CDC 及派生類

HMENU

CMenu

HPEN HBRUSH HFONT HBITMAP HPALETTE HRGN

CGdiObject

HIMAGELIST

CImageList

SOCKET

CSocket


  如果你擁有上面的任何一個Windows對象句柄,你可以調用對應類的靜態(tài)成員函數(shù)FromHandle來查找對應的MFC對象(系統(tǒng)為每個線程維護了一個從Windows對象句柄到MFC對象的映射,一個持久的map和一個臨時的map);如果你擁有上面的MFC對象,你也可以通過MFC類的公有成員變量來獲取對應的Windows對象句柄。
  例如,給定一個HWND類型的句柄hWnd,可以通過

CWnd::FromHandle(hWnd)

來獲得CWnd對象的指針。如果hWnd沒有對應的CWnd對象,則系統(tǒng)會產(chǎn)生一個臨時CWnd對象與hWnd關聯(lián),并返回該對象的指針。在獲得CWnd對象后,你可以通過CWnd的公有成員m_hWnd獲得窗口對象的句柄。
  如果在調用FromHandle時產(chǎn)生臨時MFC對象,句柄和MFC對象之間的映射被保存在系統(tǒng)的臨時map中。默認情況下,CWinThread::OnIdle自動為那些支持臨時句柄映射的MFC類調用DeleteTempMap函數(shù)。在DeleteTempMap函數(shù)中,這些臨時對象將被取消與句柄的關聯(lián),然后被銷毀。
  如果你擁有一個Windows對象句柄,那么你可以創(chuàng)建一個對應的MFC對象,然后把該MFC對象與該Windows對象句柄進行關聯(lián)。此時,該MFC對象與Windows對象相互建立起映射關系。
  例如,對于如下代碼:

CWnd myWnd;

myWnd.Attach(hWnd);

將建立起hWnd到myWnd的映射。此后,你調用CWnd::FromHandle(hWnd)將返回myWnd對象的指針。如果myWnd對象被銷毀,它的析構函數(shù)將自動通過調用DestroyWindow來銷毀該hWnd所指Windows對象。如果該行為不是所期望的,則需要在myWnd銷毀之前調用Detach成員函數(shù)解除兩者之間的關聯(lián)(映射),如 myWnd.Detach()。
所有臨時MFC對象和持久(permanent)MFC對象都是以線程為單位進行維護管理的。也就是說,一個線程不能夠訪問另一個線程的MFC包裝類對象,不管它是臨時的還是持久的。
  為了在不同的線程間傳遞這些Windows對象,總是應該通過HANDLE類型傳遞。從一個線程向另一個線程傳遞MFC包裝對象將可能引起不可預料的結果。
  由于MFC包裝類對象是以線程為單位進行管理的,因此,在程序中的不同線程中可能有多個MFC對象與同一個句柄對應。
  存在的疑問:如果同一線程中有多個MFC對象Attach同一句柄,那么對該句柄調用FromHandle將返回哪個MFC對象呢?未定義行為?

Windows對象、句柄與MFC對象


更多文章、技術交流、商務合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产精品一国产精品 | 伊人焦久影院 | 免费国内精品久久久久影院 | 特大毛片 | 男女生性毛片免费观看 | 九九久久久久久久爱 | 国产一区二区三区视频在线观看 | 亚洲图欧美色综合图 | 日本a在线观看 | 伊人久久国产精品 | 一区二区三区视频 | 国产亚洲人成a在线v网站 | 国产成人综合久久 | 免费99热在线观看 | 亚洲一区二区在线 | 日韩午夜伦 | 亚洲乱码一区二区三区在线观看 | 成人国产欧美精品一区二区 | 秘密影院久久综合亚洲综合 | 成人免费视频在 | 伊人久久欧美综合精品 | 美国一级毛片片aa久久综合 | 香蕉视频免费在线播放 | 黄片a级毛片 | 中文字幕一区二区区免 | 国产亚洲精品xxx | 99精品这里只有精品高清视频 | 欧美成人看片 | 久久国产精品最新一区 | 久久综合日韩亚洲精品色 | 日本三级带日本三级带黄首页 | 亚洲婷婷在线 | 精品欧美一区二区精品久久 | 欧美二区三区 | 亚洲香蕉| 欧美日韩在线观看视频 | 91热久久免费频精品99欧美 | 一区二区三区不卡在线 | 国产精品久久久久久久久久久不卡 | 国产美女流白浆 | 成人免费观看视频久爱网 |