• <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>

            操作系統怎么根據一個HWND句柄,找到相應的代碼

            【 在 某 的大作中提到: 】

            : 比如我有一個CMyButton的類,我現在有他的一個handle
            : 編譯器怎么根據這個句柄找到CMyButton的代碼的?

            【 在 某某 的大作中提到: 】
            : 這個和OS/Compiler沒關系,是庫起的作用
            : 以從某個文章里看的,說MFC用了一個大map,沒驗證過
            : 有本講GDI的書里,用了WNDCLASS里的extra bytes來實現的這個映射

             


            MFC的應用里,每個MFC線程(必須要使用MFC方式啟動的線程)都維護有一個MFC object和HWND之間的

            mapping,整個MFC框架就是使用這個機制來實現應用級C++對象和系統級原生窗口內核對象之間的關聯;

            因為這個mapping是以線程為單位來維護的,每個線程間互不關聯,所以,一個應用里對于涉及UI窗口的

            任務最好是都放在同一個線程里面,一般就是當前進程的主線程,否則可能出現MFC object和HWND之間

            關聯不上的問題,而且這樣的問題還很隱蔽。

            至于WNDCLASS結構自帶的extra bytes域,是以前缺乏應用框架的時代,使用Win32 API直接開發時,讓每個

            窗口類(這里的類,不是C++ class的概念,而是Windows系統窗口定義時的一種數據結構)都能有個附

            帶一些額外的自定義數據的空間,這個空間往往被用來存放與當前窗口類相關的用戶數據,通常是指向

            某個內存區域的指針,當程序操作這個屬于這個窗口類的窗口時就可以根據這個附帶的自定義數據(或

            者指針)來操作對應的關聯自定義數據;很多后來出現的框架,也都使用了這個extra bytes域,來存放

            框架本身的一些和窗口類相關聯的數據結構。從目前趨勢看,直接使用WNDCLASS以及extra bytes的可能

            性是微乎其微了,但是如果要做好原生應用的開發,很多底層的實現細節最要還是要知道一下,以便于

            優化結構和性能,以及出錯時的調試處理;因為無論是Winform/WPF,還是跨平臺的WTL/QT/WxWindows等

            等新型的機制或者框架、類庫,只要是在Windows平臺上搭建的,那都是基于前面說過的這套最基本也是

            最核心的Win32 API基礎之上。

             

            posted on 2011-04-04 14:16 flagman 閱讀(1752) 評論(4)  編輯 收藏 引用 所屬分類: 設計 DesignC++

            評論

            # re: 操作系統怎么根據一個HWND句柄,找到相應的代碼 2011-04-04 14:37 空明流轉

            其實這種extra byte的辦法,很多庫都有。.net的component也多有object類型的tag。這個是應用程序定制的好辦法。  回復  更多評論   

            # re: 操作系統怎么根據一個HWND句柄,找到相應的代碼[未登錄] 2011-04-04 19:01 vincent

            你可以把一個handle比喻成一個內核對象在內核中的數組索引,當然,也許這個handle是索引處理過的東西
            內核對象身上自然存儲的有它相關的一些資源,屬性或信息  回復  更多評論   

            # re: 操作系統怎么根據一個HWND句柄,找到相應的代碼[未登錄] 2011-04-04 19:02 vincent

            我又2了。。沒仔細看題。。。真的要檢討了。。
            同好奇。。  回復  更多評論   

            # re: 操作系統怎么根據一個HWND句柄,找到相應的代碼 2011-04-07 14:54 flagman

            @空明流轉
            是這樣,在MFC出現之前,純Win32 API的時代,extra byte是最便捷的對窗口自定義數據的存儲方法;.net framework的設計者很有可能參考了這種設計思路,所以在UI界面的components上也帶有可攜帶自定義數據的tag field;

            引申出去,常見很多人問,“某某技術要學嗎”“某某庫、框架要摸索一下嗎”,真要把某個技術、庫等等研究透了,就常常會發現有許多設計思路和方法是相似的。  回復  更多評論   

            <2010年12月>
            2829301234
            567891011
            12131415161718
            19202122232425
            2627282930311
            2345678

            導航

            統計

            常用鏈接

            留言簿(1)

            隨筆分類

            隨筆檔案

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            精品久久久久久无码中文字幕| 久久久久亚洲AV成人网| 久久久久亚洲av无码专区| 久久久无码精品亚洲日韩按摩| 99国内精品久久久久久久| 国产精品美女久久福利网站| 精品久久久久久久无码 | 人妻无码精品久久亚瑟影视| 乱亲女H秽乱长久久久| 久久最新免费视频| 国产精品久久永久免费| 久久精品国产亚洲AV香蕉| www亚洲欲色成人久久精品| 久久综合给合久久狠狠狠97色 | 亚洲综合伊人久久大杳蕉| 久久99国产精品久久99果冻传媒| 丁香五月综合久久激情| 久久亚洲AV成人出白浆无码国产| 久久久久无码国产精品不卡| 91麻精品国产91久久久久| 久久ww精品w免费人成| 一本一本久久a久久综合精品蜜桃| 精品久久久久久无码人妻热 | 国产精品成人久久久| 久久99精品免费一区二区| 国产成人香蕉久久久久| aaa级精品久久久国产片| 狠狠色丁香久久婷婷综合五月| 亚洲综合伊人久久综合| 亚洲AV日韩精品久久久久| AV无码久久久久不卡蜜桃| 国产毛片欧美毛片久久久| 中文字幕久久精品无码| 亚洲精品无码久久久影院相关影片| 久久夜色精品国产噜噜亚洲a| 日本精品久久久久影院日本| 亚洲国产成人精品女人久久久 | 久久最新精品国产| 97精品国产97久久久久久免费| 亚洲成人精品久久| 精品久久人人做人人爽综合 |