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

            隨筆分類

            隨筆檔案

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            久久婷婷人人澡人人| 亚洲精品国产字幕久久不卡| 国产亚洲美女精品久久久久狼| 欧美大香线蕉线伊人久久| 久久91精品国产91久久小草| 久久久久女教师免费一区| 无码国内精品久久人妻蜜桃| 成人精品一区二区久久| 亚洲va久久久噜噜噜久久天堂| 久久99精品国产麻豆宅宅| 亚洲国产成人久久笫一页| 99久久精品日本一区二区免费| 久久久久无码国产精品不卡| 久久久女人与动物群交毛片 | 久久久久久久综合综合狠狠| 亚洲va久久久噜噜噜久久狠狠| 国产精品欧美久久久久无广告| 少妇高潮惨叫久久久久久| 久久涩综合| 久久成人18免费网站| 久久午夜电影网| 精品久久久久久无码专区不卡 | 怡红院日本一道日本久久 | 久久99精品久久久久久久不卡| 武侠古典久久婷婷狼人伊人| 香蕉久久夜色精品国产小说| 久久久久99精品成人片直播| 国产aⅴ激情无码久久| 国产香蕉久久精品综合网| 欧美午夜A∨大片久久 | 久久成人国产精品免费软件| 青青草国产97免久久费观看| 国内精品久久久久久久coent| 久久99中文字幕久久| 粉嫩小泬无遮挡久久久久久 | 久久综合成人网| 久久久综合香蕉尹人综合网| 色综合久久久久综合99| 一级女性全黄久久生活片免费| 一本色道久久88综合日韩精品 | 日本精品久久久久中文字幕8 |