• <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 閱讀(1731) 評論(4)  編輯 收藏 引用 所屬分類: 設計 Design 、C++

            評論

            # 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;

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

            <2011年4月>
            272829303112
            3456789
            10111213141516
            17181920212223
            24252627282930
            1234567

            導航

            統計

            常用鏈接

            留言簿(1)

            隨筆分類

            隨筆檔案

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            亚洲午夜久久久精品影院| 2021少妇久久久久久久久久| 亚洲国产高清精品线久久| 久久99这里只有精品国产| 久久精品亚洲一区二区三区浴池| 99久久er这里只有精品18| 性做久久久久久久久老女人| 99久久国产宗和精品1上映| 国产99久久精品一区二区| 久久精品国产国产精品四凭| 无码AV波多野结衣久久| 久久强奷乱码老熟女网站| 久久精品黄AA片一区二区三区| 久久精品女人天堂AV麻| 久久久久亚洲AV无码网站| 亚洲国产精品成人AV无码久久综合影院| 亚洲色欲久久久综合网东京热| 精品国产一区二区三区久久蜜臀| 一本久久知道综合久久| 久久久WWW免费人成精品| 精品国产乱码久久久久久郑州公司| 久久国产三级无码一区二区| 成人国内精品久久久久一区| 久久人与动人物a级毛片| 性做久久久久久久久| 国产午夜电影久久| 日本精品久久久中文字幕| 国产精品一区二区久久不卡| 伊人久久大香线焦AV综合影院| 亚洲欧美一级久久精品| 久久久久久毛片免费看| 国产精品伦理久久久久久| 韩国三级大全久久网站| 久久夜色精品国产噜噜麻豆 | 亚洲中文字幕久久精品无码喷水| 精品无码久久久久久久久久| 国产成人香蕉久久久久| 久久精品无码一区二区日韩AV| 日韩va亚洲va欧美va久久| 亚洲中文字幕伊人久久无码| 久久久久亚洲精品日久生情|