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

隨筆 - 25  文章 - 29  trackbacks - 0
<2006年7月>
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345

常用鏈接

留言簿(4)

隨筆分類(22)

隨筆檔案(25)

文章分類(2)

文章檔案(2)

相冊

最新隨筆

搜索

  •  

積分與排名

  • 積分 - 57075
  • 排名 - 405

最新評論

閱讀排行榜

評論排行榜

The Problem

Windows objects are normally represented by HANDLEs. The MFC classes wrap Windows object handles with C++ objects. The handle wrapping functions of the MFC class library provide a way to find the C++ object that is wrapping the Windows object with a particular handle. There are times when a Windows object does not have a C++ wrapper object, however, and at these times a temporary object is created to act as the C++ wrapper.

mfc 映射的 windows object ---->c++ wrapper
以下使用 mfc 的函數 如:fromhandle, getdlgitem,都會返回temporary 和 pemanent? c++ wrapper object
?注意:
???? 零時的 對象 會被在空閑時(OnIdle()函數)被刪除,不能存下在下次消息處理中 使用
The default OnIdle processing in CWinThread automatically calls DeleteTempMap for each class that supports temporary handle maps
////////////////////////////////////////////////////////////
The Windows objects that use handle maps are:

  • HWND (CWnd and CWnd-derived classes)
  • HDC (CDC and CDC-derived classes)
  • HMENU (CMenu)
  • HPEN (CGdiObject)
  • HBRUSH (CGdiObject)
  • HFONT (CGdiObject)
  • HBITMAP (CGdiObject)
  • HPALETTE (CGdiObject)
  • HRGN (CGdiObject)
  • HIMAGELIST (CImageList)
  • SOCKET (CSocket)

///////////////////////////////////////////////

Given a handle to any of these objects, you can find the MFC object that wraps the handle by calling the static member function FromHandle. For example, given an HWND called hWnd:

CWnd::FromHandle(hWnd)

will return a pointer to the CWnd that wraps the hWnd. If that hWnd does not have a specific wrapper object, then a temporary CWnd is created to wrap the hWnd. This makes it possible to get a valid C++ object from any handle.

Once you have a wrapper object, you can get to its handle through a public member variable. In the case of a CWnd, m_hWnd contains the HWND for that object.

Attaching Handles to MFC Objects

Given a newly created handle-wrapper object and a handle to a Windows object, you can associate the two by calling Attach. For example:

CWnd myWnd;
myWnd.Attach(hWnd);
////mywnd 析構時會調用 destroywindow ,連同 hwnd 一起銷毀




This makes an entry in the permanent map associating myWnd and hWnd.
Calling CWnd::FromHandle(hWnd) will now return a pointer to myWnd.
When myWnd is deleted, the destructor will automatically destroy the hWnd by calling the Windows DestroyWindow function. If this is not desired, the hWnd must be detached from myWnd before the myWnd object is destroyed (normally when leaving the scope at which myWnd was defined). The Detach member function does this.

myWnd.Detach();

More About Temporary Objects

Temporary objects are created whenever FromHandle is given a handle that does not already have a wrapper object. These temporary objects are detached from their handle and deleted by the DeleteTempMap functions. The default OnIdle processing in CWinThread automatically calls DeleteTempMap for each class that supports temporary handle maps. This means that you cannot assume a pointer to a temporary object will be valid past the point of exit from the function where the pointer was obtained, as the temporary object will be deleted during the Windows message-loop idle time.

很重要:
在多線程中傳遞 c++ wrapper object 是無效的(無論是 temporary 還是 permanent)
只能傳遞 windows handle, 換句話就是說, 線程 只能 訪問 自己創建的c++ wrapper object

Wrapper Objects and Multiple Threads

Both temporary and permanent objects are maintained on a per-thread basis. That is, one thread cannot access another threads C++ wrapper objects, regardless of whether it is temporary or permanent. As stated above, temporary objects are deleted when the thread which that temporary object belongs enters OnIdle.

To pass these objects from one thread to another, always send them as their native HANDLE type. Passing a C++ wrapper object from one thread to another will often result in unexpected results.

????

posted on 2006-06-30 11:33 黃大仙 閱讀(1728) 評論(1)  編輯 收藏 引用 所屬分類: c++

FeedBack:
# re: MFC中 windows object 和 C++ object 2006-07-08 00:49 flyingxu
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
              欧美一区视频| 午夜久久久久久| 欧美激情在线观看| 日韩亚洲一区在线播放| 亚洲第一搞黄网站| 欧美日韩国产色综合一二三四| 一区二区三区www| 亚洲天堂免费观看| 国语自产精品视频在线看8查询8| 欧美电影免费| 国产精品视频自拍| 欧美福利一区| 国产精品xnxxcom| 久久只精品国产| 欧美女同在线视频| 久久久www成人免费无遮挡大片| 久久久久一区二区| 亚洲一区二区三区高清不卡| 性做久久久久久免费观看欧美| 影音先锋中文字幕一区二区| 亚洲精品在线二区| 国产曰批免费观看久久久| 欧美福利网址| 国产欧美日韩中文字幕在线| 亚洲国内自拍| 韩国亚洲精品| 一区二区三区久久久| 亚洲电影免费观看高清完整版| 99一区二区| 亚洲国产欧美久久| 午夜精品久久久久久久久久久久 | 一区二区欧美激情| 在线精品国产欧美| 午夜久久电影网| 亚洲午夜激情网页| 牛夜精品久久久久久久99黑人| 欧美一区二区三区在线看| 欧美激情亚洲| 欧美成人福利视频| 国产亚洲精品高潮| 亚洲性夜色噜噜噜7777| 一本色道久久综合狠狠躁篇怎么玩| 久久国产精品72免费观看| 亚洲欧美日韩区| 日韩视频欧美视频| 激情综合中文娱乐网| 欧美视频亚洲视频| 久久久亚洲高清| 国产美女精品免费电影| 一区二区三区久久| 亚洲曰本av电影| 欧美日韩国产综合视频在线观看| 欧美好骚综合网| 亚洲高清不卡一区| 久久精品国产免费观看| 久久精品国产免费看久久精品| 国产精品久久午夜夜伦鲁鲁| 亚洲精品日韩在线| 亚洲另类自拍| 欧美日本不卡高清| 亚洲精品一区久久久久久| 亚洲日本va在线观看| 欧美sm视频| 欧美二区视频| 久久久久久久网站| 欧美在线日韩| 国产精品乱看| 香蕉国产精品偷在线观看不卡| 性做久久久久久久免费看| 国产精品一区二区久久国产| 亚洲尤物影院| 久久九九99| 亚洲国产日韩欧美在线动漫| 欧美不卡激情三级在线观看| 亚洲国产91色在线| 一本不卡影院| 国产精品视频九色porn| 欧美中文在线免费| 欧美激情bt| 亚洲午夜精品| 国产一区二区久久| 欧美成年人在线观看| 99国产精品国产精品毛片| 性视频1819p久久| 欧美精品国产一区| 国产性猛交xxxx免费看久久| 亚洲欧美日韩一区二区三区在线观看 | 欧美午夜精品电影| 欧美一区永久视频免费观看| 欧美成人午夜| 亚洲综合国产激情另类一区| 国产在线精品二区| 免费久久99精品国产自| 亚洲深爱激情| 欧美xart系列高清| 亚洲综合电影| 亚洲破处大片| 国产欧美婷婷中文| 免费成人高清视频| 亚洲摸下面视频| 亚洲激情女人| 午夜精品偷拍| 亚洲欧美日韩国产中文| 一区二区在线观看视频在线观看| 欧美精品在线一区| 久久女同精品一区二区| 一本久道综合久久精品| 免费不卡欧美自拍视频| 亚洲欧美日韩一区二区| 亚洲激情网站| 一区在线播放| 国产精品亚洲综合| 欧美区一区二| 欧美插天视频在线播放| 久久国产精品久久久久久| 中文国产成人精品| 亚洲精品日本| 亚洲第一福利视频| 久久一日本道色综合久久| 欧美亚洲专区| 亚洲一区二区三区四区五区午夜| 亚洲欧洲一区二区三区在线观看 | 99国产精品久久久| 在线成人中文字幕| 国产伊人精品| 国产字幕视频一区二区| 国产视频一区欧美| 国产酒店精品激情| 国产精品手机视频| 国产精品久久久久久久久久久久久久| 欧美激情精品久久久六区热门 | 欧美激情一区二区久久久| 久久婷婷国产综合尤物精品| 久久精品一本久久99精品| 欧美一区二区三区免费观看视频| 亚洲影院色在线观看免费| 宅男在线国产精品| 亚洲一区在线观看视频 | 亚洲国产人成综合网站| 亚洲成色www8888| 男人天堂欧美日韩| 可以看av的网站久久看| 久久综合电影一区| 免费看的黄色欧美网站| 免费久久精品视频| 欧美精品尤物在线| 欧美日韩黄视频| 欧美视频一二三区| 国产精品伦一区| 国产一区二区三区无遮挡| 禁断一区二区三区在线| 亚洲国产激情| 在线亚洲激情| 欧美一二三区在线观看| 久久精品国内一区二区三区| 久久亚洲综合| 亚洲激情不卡| 亚洲图色在线| 久久久www免费人成黑人精品| 久热精品在线视频| 欧美三区在线| 激情国产一区二区| 99国产一区二区三精品乱码| 亚洲综合日韩中文字幕v在线| 亚欧成人在线| 欧美国产日韩精品| 一区二区不卡在线视频 午夜欧美不卡'| 亚洲性色视频| 老司机成人网| 国产精品一区一区三区| 亚洲国产欧美日韩精品| 亚洲一区二区日本| 免费视频最近日韩| 亚洲天堂免费观看| 国内精品嫩模av私拍在线观看| 激情综合激情| 亚洲女性裸体视频| 欧美激情一区二区三级高清视频| 亚洲视频一区二区在线观看 | 亚洲午夜精品福利| 欧美在线观看视频一区二区三区 | 91久久精品一区二区三区| 亚洲综合第一| 亚洲国产欧美一区二区三区丁香婷| 亚洲与欧洲av电影| 欧美激情免费在线| 国内伊人久久久久久网站视频| 国产精品99久久久久久有的能看| 久久久一区二区三区| 宅男噜噜噜66国产日韩在线观看| 美女日韩欧美| 国产一区自拍视频| 香蕉久久a毛片| 亚洲麻豆视频| 欧美电影打屁股sp| 极品尤物av久久免费看| 欧美一区二区三区免费大片| 99精品视频网| 欧美日韩国产综合在线| 99成人在线|