• <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 閱讀(1738) 評論(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年6月>
            25262728293031
            1234567
            891011121314
            15161718192021
            22232425262728
            293012345

            導航

            統計

            常用鏈接

            留言簿(1)

            隨筆分類

            隨筆檔案

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            亚洲婷婷国产精品电影人久久| 久久久噜噜噜久久中文字幕色伊伊 | 国产婷婷成人久久Av免费高清 | 久久久无码精品亚洲日韩京东传媒| 97精品伊人久久大香线蕉| 日韩人妻无码一区二区三区久久 | 99久久综合国产精品二区| 污污内射久久一区二区欧美日韩| 久久久久99精品成人片试看| 99久久国产综合精品五月天喷水| 区亚洲欧美一级久久精品亚洲精品成人网久久久久| 欧美久久一区二区三区| 国产精品久久久久久一区二区三区| 久久人人爽人爽人人爽av| 69国产成人综合久久精品| 人人妻久久人人澡人人爽人人精品| 天天综合久久久网| 国产三级久久久精品麻豆三级| 亚洲欧洲久久久精品| 久久久精品波多野结衣| 亚洲国产精品一区二区久久| 久久久久人妻精品一区二区三区| 亚洲国产精品综合久久网络| 国产无套内射久久久国产| 精品国产一区二区三区久久| 婷婷五月深深久久精品| 日韩欧美亚洲综合久久| 99久久香蕉国产线看观香| 久久91精品国产91久| 伊人久久大香线蕉成人| 久久久久久午夜精品| 亚洲а∨天堂久久精品| 亚洲国产精品无码久久青草| 久久综合久久性久99毛片| 欧美国产成人久久精品| 日韩影院久久| 久久久久久久女国产乱让韩| 久久久SS麻豆欧美国产日韩| 无码AV波多野结衣久久| 久久精品人人做人人爽97| 久久免费视频观看|