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

隨筆 - 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>
              亚洲女性裸体视频| 亚洲综合成人婷婷小说| 美日韩精品免费| 亚洲第一页中文字幕| 欧美成人一区二区三区| 久久精品一本久久99精品| 午夜精品福利一区二区三区av | 中日韩视频在线观看| 欧美丝袜第一区| 久久国产天堂福利天堂| 久久国产一二区| 亚洲免费电影在线观看| 亚洲一区二区四区| 亚洲国产高清视频| 日韩视频二区| 国内精品美女在线观看| 亚洲国产精品成人综合色在线婷婷| 欧美久久久久久久| 欧美一区二区三区在线观看视频| 久久久久久日产精品| 日韩午夜在线电影| 性欧美超级视频| 亚洲人www| 午夜国产精品影院在线观看| 亚洲国产精品久久精品怡红院| a4yy欧美一区二区三区| 韩国成人精品a∨在线观看| 亚洲激情啪啪| 久久精品系列| 在线中文字幕一区| 久久精品亚洲| 亚洲综合导航| 欧美精品国产| 欧美黑人在线观看| 久久中文字幕一区| 欧美专区日韩视频| 欧美日韩亚洲一区二区三区在线观看 | 激情欧美国产欧美| 艳女tv在线观看国产一区| 在线观看欧美亚洲| 亚洲欧美日韩另类精品一区二区三区 | 欧美国产精品久久| 鲁鲁狠狠狠7777一区二区| 国产精品久久久久久久久久尿| 欧美激情精品久久久六区热门| 国模精品娜娜一二三区| 亚洲一区二区三区免费观看| 一区二区高清在线| 欧美国产日韩视频| 欧美大片在线观看一区| 国产主播喷水一区二区| 午夜精品亚洲| 性欧美超级视频| 国产精品久久国产精麻豆99网站| 亚洲另类视频| 一区二区福利| 欧美日韩一区二区三区四区在线观看 | 亚洲剧情一区二区| 欧美电影打屁股sp| 亚洲福利视频一区| 亚洲高清不卡在线观看| 猛男gaygay欧美视频| 米奇777超碰欧美日韩亚洲| 激情六月婷婷久久| 久久亚洲精品视频| 欧美大秀在线观看| 亚洲精选视频在线| 欧美日韩一区成人| 亚洲自拍偷拍福利| 久久av老司机精品网站导航| 国产一区日韩一区| 久久综合九色综合欧美狠狠| 嫩草影视亚洲| 亚洲精品小视频在线观看| 欧美韩日高清| 在线视频精品一区| 欧美一区二区在线播放| 好吊日精品视频| 美女网站在线免费欧美精品| 亚洲激情六月丁香| 亚洲欧美日韩国产成人| 国产日韩免费| 久久这里只精品最新地址| 亚洲欧洲久久| 欧美一区二区三区四区在线| 永久免费毛片在线播放不卡| 男人的天堂亚洲| 亚洲午夜女主播在线直播| 久久精品国产久精国产爱| 亚洲国产免费| 国产精品海角社区在线观看| 久久精品中文字幕一区| 亚洲人成绝费网站色www| 午夜久久久久久| 亚洲高清av在线| 国产精品电影在线观看| 久久精品观看| aⅴ色国产欧美| 免费久久久一本精品久久区| 亚洲视频中文字幕| 伊人夜夜躁av伊人久久| 欧美日韩在线电影| 久色成人在线| 亚洲欧美一区二区三区久久| 亚洲国产va精品久久久不卡综合| 欧美一区在线视频| 一二三区精品| 亚洲国产成人在线播放| 国产精品一区亚洲| 欧美久久成人| 蜜臀av国产精品久久久久| 亚洲字幕一区二区| 日韩亚洲欧美成人一区| 欧美96在线丨欧| 久久激情一区| 香蕉av福利精品导航| 夜夜躁日日躁狠狠久久88av| 在线欧美日韩精品| 国产午夜久久| 国产精品视频免费观看www| 欧美bbbxxxxx| 媚黑女一区二区| 久久久久99精品国产片| 香蕉成人伊视频在线观看| 一区二区三区波多野结衣在线观看| 久久一综合视频| 久久亚洲捆绑美女| 久久精品国产99| 欧美综合二区| 久久国产精品一区二区三区| 亚洲欧美一区在线| 亚洲一区日本| 亚洲欧美日韩国产一区二区| 亚洲一本大道在线| 亚洲午夜在线观看| 正在播放日韩| 亚洲尤物视频网| 亚洲一区欧美一区| 亚洲欧美日本伦理| 香蕉久久夜色精品国产使用方法| 亚洲一区精品在线| 亚洲一区二区三区久久| 亚洲天堂成人在线观看| 亚洲影音一区| 欧美一区二区三区成人| 午夜精品久久久久久久久| 西西裸体人体做爰大胆久久久| 性色一区二区| 久久午夜av| 欧美激情视频网站| 亚洲国产欧美国产综合一区| 亚洲国产专区校园欧美| 一本久久综合亚洲鲁鲁| 亚洲视频播放| 久久国产精品电影| 久久综合色播五月| 欧美激情性爽国产精品17p| 欧美少妇一区| 国内在线观看一区二区三区| 一区二区在线视频观看| 日韩视频国产视频| 午夜精品久久久久久久99水蜜桃 | 久久综合国产精品台湾中文娱乐网| 久久最新视频| 亚洲人成精品久久久久| 亚洲一区视频在线| 久久久五月天| 欧美日韩亚洲系列| 国产一区二区精品久久99| 亚洲黄色成人久久久| 亚洲视频一区二区在线观看 | 亚洲在线网站| 免费成人激情视频| 日韩亚洲在线观看| 久久久久久亚洲精品杨幂换脸| 欧美国产高清| 国产日韩精品久久| 亚洲免费观看| 久久精品国产2020观看福利| 亚洲电影免费观看高清| 亚洲一区一卡| 欧美bbbxxxxx| 激情91久久| 欧美一区二区三区成人| 亚洲第一在线视频| 性色一区二区三区| 欧美日韩另类丝袜其他| 亚洲电影免费观看高清完整版在线观看| avtt综合网| 欧美成人激情视频| 午夜久久久久久久久久一区二区| 欧美国产日韩一区二区在线观看| 国产深夜精品| 亚洲欧美电影院| 亚洲日本中文字幕免费在线不卡| 久久精品国内一区二区三区| 国产精品第三页| 这里只有精品视频| 亚洲国产综合视频在线观看| 久久一区二区三区四区|