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

隨筆 - 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综合在线| 欧美午夜在线视频| 亚洲欧美日韩区| 亚洲一区二区伦理| 国产欧美一区二区三区视频| 性欧美1819sex性高清| 亚洲欧美在线另类| 国产精品久线观看视频| 午夜视频在线观看一区二区三区| 亚洲少妇一区| 狠狠色综合网| 亚洲成色777777女色窝| 欧美日本不卡| 日韩视频中文| 久久人人97超碰人人澡爱香蕉| 久久久欧美精品| 亚洲人成在线观看一区二区| 亚洲日本中文字幕免费在线不卡| 欧美日韩亚洲高清| 欧美一区二区三区在线观看视频| 久久久久久97三级| 欧美精品色综合| 亚洲免费视频成人| 久久久久综合| 在线亚洲自拍| 久久国产直播| 亚洲精品一级| 久久全国免费视频| 欧美日韩免费网站| 久久久之久亚州精品露出| 久久久夜夜夜| 亚洲欧美日韩国产成人| 在线一区二区三区四区五区| 国产一区二区三区四区三区四| 美女精品在线观看| 国产精品久久久久永久免费观看| 久久综合中文色婷婷| 欧美日韩国产高清| 老司机凹凸av亚洲导航| 亚洲伊人网站| 亚洲成人在线| 亚洲影视在线播放| 一区二区日韩精品| 久久久综合香蕉尹人综合网| 亚洲视频久久| 美女91精品| 久久99伊人| 欧美日韩精品三区| 麻豆精品在线视频| 国产精品在线看| 亚洲精品一区中文| 亚洲国产成人在线播放| 亚洲免费在线视频| 在线天堂一区av电影| 免费久久99精品国产自在现线| 性亚洲最疯狂xxxx高清| 亚洲免费视频网站| 一区二区日韩精品| 欧美高清视频在线播放| 免费人成精品欧美精品| 韩国v欧美v日本v亚洲v| 亚洲男人的天堂在线| 国产麻豆视频精品| 制服丝袜亚洲播放| 亚洲一区二区三区免费在线观看 | 午夜精品成人在线| 亚洲中字黄色| 欧美天堂在线观看| 亚洲精品视频免费观看| 亚洲国产欧美在线| 欧美aⅴ99久久黑人专区| 亚洲国产色一区| 美腿丝袜亚洲色图| 亚洲国产精品视频一区| 亚洲国产一区二区a毛片| 久久一区二区三区av| 久久久www成人免费毛片麻豆| 国产精品v欧美精品v日韩精品| 999亚洲国产精| 亚洲天堂av在线免费观看| 欧美日韩一卡| 一区二区三区久久网| 亚洲视频精选| 国产精品理论片在线观看| 一区二区三区.www| 欧美一区国产在线| 国产一区二区三区四区老人| 亚洲国产日日夜夜| 亚洲一区欧美一区| 国产精品久久久久久模特| 亚洲小说欧美另类婷婷| 久久久91精品国产| 亚洲高清网站| 欧美人在线观看| 亚洲午夜视频| 欧美一区二区精品在线| 亚洲精品韩国| 国模精品一区二区三区色天香| 久久综合九色综合网站| 在线日韩精品视频| 欧美日韩国产一区二区| 亚洲欧美日韩中文播放| 亚洲乱码日产精品bd| 久久成人在线| 午夜电影亚洲| 亚洲久色影视| 在线日韩av永久免费观看| 国产伦精品一区二区三区视频孕妇| 久久久久久国产精品mv| 亚洲在线播放| 亚洲视频一二| 亚洲黄色一区| 欧美电影免费观看高清完整版| 久久岛国电影| 欧美一区二区三区在线观看视频 | 国产欧美日韩精品丝袜高跟鞋| 欧美精品午夜| 欧美大香线蕉线伊人久久国产精品| 久久久久久网| 久久精品免费| 久久午夜视频| 久久久久国产精品麻豆ai换脸| 欧美一级淫片aaaaaaa视频| 亚洲一区网站| 欧美一级黄色网| 久久国产精品99精品国产| 欧美在线999| 久久久久久久一区二区| 久久久91精品国产| 久久综合五月| 欧美国产日产韩国视频| 欧美精品久久久久久久久老牛影院 | 亚洲精品一区二区三区99| 91久久精品www人人做人人爽| 欧美激情久久久| 亚洲激情一区二区三区| 亚洲美女视频在线观看| 一区二区欧美亚洲| 亚洲欧美春色| 久久免费视频在线观看| 欧美3dxxxxhd| 欧美婷婷六月丁香综合色| 国产精品亚洲аv天堂网 | 欧美成人中文| 欧美性做爰猛烈叫床潮| 国产日韩亚洲| 亚洲激情网站免费观看| 在线视频亚洲| 久久久精品午夜少妇| 女同性一区二区三区人了人一 | 午夜日韩在线观看| 免费看成人av| 99在线精品视频| 午夜久久久久久久久久一区二区| 久久免费的精品国产v∧| 欧美日韩成人综合在线一区二区 | 欧美日韩一区二区三区免费看| 国产九色精品成人porny| 樱花yy私人影院亚洲| 亚洲午夜成aⅴ人片| 久久视频这里只有精品| 亚洲欧洲在线免费| 欧美一区二区三区播放老司机| 免费亚洲视频| 国产日韩一区二区三区在线| 亚洲激情专区| 久久久久久91香蕉国产| 亚洲精品国产拍免费91在线| 欧美一级视频| 欧美色一级片| 亚洲国产精品日韩| 久久高清一区| 制服丝袜亚洲播放| 欧美激情一区二区三区四区| 国产午夜精品久久| 亚洲综合色网站| 最新日韩在线视频| 久久久久久综合| 国产欧美一区二区三区久久人妖| 日韩一级黄色av| 欧美成人性生活| 久久精品国产999大香线蕉| 国产精品欧美经典| 亚洲一区久久|