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

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

常用鏈接

留言簿(4)

隨筆分類(22)

隨筆檔案(25)

文章分類(2)

文章檔案(2)

相冊

最新隨筆

搜索

  •  

積分與排名

  • 積分 - 57388
  • 排名 - 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 的函數(shù) 如:fromhandle, getdlgitem,都會返回temporary 和 pemanent? c++ wrapper object
?注意:
???? 零時的 對象 會被在空閑時(OnIdle()函數(shù))被刪除,不能存下在下次消息處理中 使用
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, 換句話就是說, 線程 只能 訪問 自己創(chuàng)建的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 黃大仙 閱讀(1754) 評論(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>
              久久激五月天综合精品| 亚洲视频你懂的| 欧美+日本+国产+在线a∨观看| 亚洲在线网站| 亚洲欧美国产高清| 欧美一区二区在线免费观看| 久久精品日产第一区二区| 久久精品国产91精品亚洲| 久久综合九色九九| 欧美肥婆在线| 欧美午夜精品理论片a级大开眼界| 国产精品www994| 国产亚洲a∨片在线观看| 在线观看一区欧美| 妖精视频成人观看www| 小黄鸭视频精品导航| 久久免费视频在线观看| 亚洲经典在线看| 亚洲精品免费一区二区三区| 一本色道久久综合亚洲二区三区| 午夜日韩福利| 欧美激情第8页| 国产视频一区二区在线观看 | 国产精品日本| 精品成人一区二区| 亚洲无玛一区| 免费不卡在线视频| 一区二区三区日韩欧美| 久久久亚洲人| 国产精品久久久久久亚洲毛片| 国产主播在线一区| 亚洲少妇最新在线视频| 免费欧美在线视频| 亚洲一区二区三区四区中文 | 亚洲综合色自拍一区| 国产精品高清一区二区三区| 国产综合av| 宅男噜噜噜66国产日韩在线观看| 国产精品免费一区豆花| 亚洲电影免费观看高清完整版在线观看 | 久久精品30| 亚洲欧洲精品天堂一级| 欧美亚洲一区在线| 欧美日韩综合| 亚洲精品裸体| 美女视频黄a大片欧美| 亚洲一区3d动漫同人无遮挡| 欧美成人官网二区| 亚洲黄一区二区| 久久一区二区三区四区| 亚洲欧美日韩国产中文在线| 欧美午夜在线视频| 一片黄亚洲嫩模| 亚洲精品孕妇| 欧美日韩一区三区| 一区二区三区视频在线| 亚洲人成绝费网站色www| 欧美成人一区二区三区片免费| 亚洲国产欧美一区| 欧美激情中文字幕一区二区| 久久亚洲精品一区二区| 亚洲福利一区| 亚洲国产视频一区| 欧美全黄视频| 亚洲一区免费视频| 亚洲一区二区免费在线| 国产欧美日韩高清| 久久理论片午夜琪琪电影网| 久久久久久久久伊人| 亚洲电影成人| 最近中文字幕mv在线一区二区三区四区| 麻豆av一区二区三区久久| 雨宫琴音一区二区在线| 免费成人高清在线视频| 久久中文精品| 欧美大片网址| 亚洲欧美综合| 亚洲欧美日韩综合国产aⅴ| 国产精品毛片高清在线完整版| 国产亚洲成av人片在线观看桃 | 亚洲激情一区二区| 麻豆精品网站| 美女999久久久精品视频| 亚洲一区二区三区免费观看| 另类天堂视频在线观看| av不卡在线观看| 亚洲精品在线二区| 欧美夫妇交换俱乐部在线观看| 亚洲人成在线影院| 亚洲精华国产欧美| 欧美激情一二区| 99精品视频一区二区三区| 亚洲精品美女久久7777777| 欧美成人亚洲成人| 亚洲夜间福利| 午夜免费电影一区在线观看| 国产色婷婷国产综合在线理论片a| 久久久久久久国产| 欧美成黄导航| 亚洲免费在线精品一区| 性色一区二区三区| 国产美女精品人人做人人爽| 亚洲永久网站| 午夜精品视频在线观看一区二区| 欧美午夜理伦三级在线观看| 欧美亚洲专区| 99精品视频一区二区三区| 国产精品裸体一区二区三区| 亚洲成人在线网站| 国内自拍亚洲| 亚洲影院免费| 中文高清一区| 欧美成人午夜激情在线| 久久国产精品色婷婷| 欧美成人免费一级人片100| 亚洲激情av| 亚洲一区二区欧美日韩| 亚洲国产婷婷| 羞羞答答国产精品www一本| 国产麻豆日韩| 亚洲国产精品一区二区久 | 亚洲欧美精品在线观看| 久久精品夜色噜噜亚洲a∨ | 亚洲国产另类 国产精品国产免费| 99精品99| 尤物九九久久国产精品的特点| 一区二区三区国产精华| 1000精品久久久久久久久| 日韩亚洲视频| 久久久精品一区| 亚洲欧美乱综合| 欧美日韩国产在线看| 免费亚洲电影在线| 国产日韩精品一区二区| 亚洲日本欧美| 国产精品卡一卡二卡三| 99国产精品久久久久久久成人热| 亚洲黑丝一区二区| 午夜精品视频一区| 亚洲免费视频网站| 欧美日韩一区二区三| 亚洲欧美日韩国产一区二区| 欧美视频亚洲视频| 久久av一区| 国产亚洲激情视频在线| 一本大道久久a久久精二百| 亚洲免费电影在线| 美女免费视频一区| 另类专区欧美制服同性| 国产一区二区三区最好精华液| 欧美一区二视频在线免费观看| 亚洲主播在线播放| 欧美视频在线观看一区| 亚洲免费精彩视频| 老司机精品导航| 免费av成人在线| 樱桃成人精品视频在线播放| 亚洲在线免费| 免费成人高清视频| 极品尤物久久久av免费看| 欧美一区二区三区在线看| 欧美中文字幕第一页| 亚洲国产精品123| 欧美日韩在线三级| 欧美怡红院视频| 久久这里有精品视频| 99ri日韩精品视频| 欧美日韩午夜在线视频| 中文高清一区| 欧美一区1区三区3区公司| 国产日产欧产精品推荐色| 久久在线视频在线| 亚洲一区成人| 国产精品自在线| 久久精精品视频| 免费久久久一本精品久久区| 亚洲激情在线视频| 国产精品视频免费一区| 久久久99精品免费观看不卡| 女女同性女同一区二区三区91| 亚洲精品自在在线观看| 国产欧美日韩高清| 亚洲一区二区久久| 亚洲缚视频在线观看| 激情成人av在线| 欧美精品性视频| 久久久久一区二区三区| 91久久夜色精品国产九色| 久久精品日韩欧美| 亚洲黄色影片| 黄色资源网久久资源365| 久久久噜久噜久久综合| 亚洲性感激情| 亚洲免费成人av电影| 国产一区二区激情| 国产精品久久久久婷婷| 欧美激情片在线观看| 老司机精品久久| 亚洲欧美日韩国产中文| 一本久道久久综合婷婷鲸鱼|