• <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 閱讀(1732) 評論(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;

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

            <2025年5月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            導航

            統計

            常用鏈接

            留言簿(1)

            隨筆分類

            隨筆檔案

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            韩国免费A级毛片久久| 伊人久久综在合线亚洲2019 | 欧美精品国产综合久久| 精品久久久久久久久免费影院| 久久人人爽人人人人爽AV| 久久人人爽人人爽人人AV| 国内精品久久久久影院一蜜桃| 91精品国产9l久久久久| 要久久爱在线免费观看| 久久亚洲精品国产精品| 久久久久亚洲?V成人无码| 日韩乱码人妻无码中文字幕久久| 久久久久国产精品| 久久精品国产精品亚洲精品| 日本精品久久久久中文字幕| 久久精品一本到99热免费| 国产三级精品久久| 久久天堂AV综合合色蜜桃网| 久久人人爽人人爽人人片AV麻豆 | 久久人人妻人人爽人人爽| 久久精品国产一区二区| 国产精品久久久久jk制服| 囯产精品久久久久久久久蜜桃| 久久精品国产亚洲精品| 93精91精品国产综合久久香蕉| www性久久久com| 久久久久AV综合网成人| 久久精品国产久精国产一老狼| 久久久久亚洲AV成人网| 久久本道久久综合伊人| 天天综合久久久网| 久久婷婷综合中文字幕| 久久久精品人妻一区二区三区四 | 蜜臀av性久久久久蜜臀aⅴ麻豆| 国产69精品久久久久99| 久久久青草久久久青草| 四虎国产精品免费久久久| 97久久综合精品久久久综合| 久久久久久九九99精品| 国产综合久久久久| 狠色狠色狠狠色综合久久|