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

            操作系統(tǒng)怎么根據(jù)一個(gè)HWND句柄,找到相應(yīng)的代碼

            【 在 某 的大作中提到: 】

            : 比如我有一個(gè)CMyButton的類,我現(xiàn)在有他的一個(gè)handle
            : 編譯器怎么根據(jù)這個(gè)句柄找到CMyButton的代碼的?

            【 在 某某 的大作中提到: 】
            : 這個(gè)和OS/Compiler沒(méi)關(guān)系,是庫(kù)起的作用
            : 以從某個(gè)文章里看的,說(shuō)MFC用了一個(gè)大map,沒(méi)驗(yàn)證過(guò)
            : 有本講GDI的書里,用了WNDCLASS里的extra bytes來(lái)實(shí)現(xiàn)的這個(gè)映射

             


            MFC的應(yīng)用里,每個(gè)MFC線程(必須要使用MFC方式啟動(dòng)的線程)都維護(hù)有一個(gè)MFC object和HWND之間的

            mapping,整個(gè)MFC框架就是使用這個(gè)機(jī)制來(lái)實(shí)現(xiàn)應(yīng)用級(jí)C++對(duì)象和系統(tǒng)級(jí)原生窗口內(nèi)核對(duì)象之間的關(guān)聯(lián);

            因?yàn)檫@個(gè)mapping是以線程為單位來(lái)維護(hù)的,每個(gè)線程間互不關(guān)聯(lián),所以,一個(gè)應(yīng)用里對(duì)于涉及UI窗口的

            任務(wù)最好是都放在同一個(gè)線程里面,一般就是當(dāng)前進(jìn)程的主線程,否則可能出現(xiàn)MFC object和HWND之間

            關(guān)聯(lián)不上的問(wèn)題,而且這樣的問(wèn)題還很隱蔽。

            至于WNDCLASS結(jié)構(gòu)自帶的extra bytes域,是以前缺乏應(yīng)用框架的時(shí)代,使用Win32 API直接開(kāi)發(fā)時(shí),讓每個(gè)

            窗口類(這里的類,不是C++ class的概念,而是Windows系統(tǒng)窗口定義時(shí)的一種數(shù)據(jù)結(jié)構(gòu))都能有個(gè)附

            帶一些額外的自定義數(shù)據(jù)的空間,這個(gè)空間往往被用來(lái)存放與當(dāng)前窗口類相關(guān)的用戶數(shù)據(jù),通常是指向

            某個(gè)內(nèi)存區(qū)域的指針,當(dāng)程序操作這個(gè)屬于這個(gè)窗口類的窗口時(shí)就可以根據(jù)這個(gè)附帶的自定義數(shù)據(jù)(或

            者指針)來(lái)操作對(duì)應(yīng)的關(guān)聯(lián)自定義數(shù)據(jù);很多后來(lái)出現(xiàn)的框架,也都使用了這個(gè)extra bytes域,來(lái)存放

            框架本身的一些和窗口類相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)。從目前趨勢(shì)看,直接使用WNDCLASS以及extra bytes的可能

            性是微乎其微了,但是如果要做好原生應(yīng)用的開(kāi)發(fā),很多底層的實(shí)現(xiàn)細(xì)節(jié)最要還是要知道一下,以便于

            優(yōu)化結(jié)構(gòu)和性能,以及出錯(cuò)時(shí)的調(diào)試處理;因?yàn)闊o(wú)論是Winform/WPF,還是跨平臺(tái)的WTL/QT/WxWindows等

            等新型的機(jī)制或者框架、類庫(kù),只要是在Windows平臺(tái)上搭建的,那都是基于前面說(shuō)過(guò)的這套最基本也是

            最核心的Win32 API基礎(chǔ)之上。

             

            posted on 2011-04-04 14:16 flagman 閱讀(1738) 評(píng)論(4)  編輯 收藏 引用 所屬分類: 設(shè)計(jì) DesignC++

            評(píng)論

            # re: 操作系統(tǒng)怎么根據(jù)一個(gè)HWND句柄,找到相應(yīng)的代碼 2011-04-04 14:37 空明流轉(zhuǎn)

            其實(shí)這種extra byte的辦法,很多庫(kù)都有。.net的component也多有object類型的tag。這個(gè)是應(yīng)用程序定制的好辦法。  回復(fù)  更多評(píng)論   

            # re: 操作系統(tǒng)怎么根據(jù)一個(gè)HWND句柄,找到相應(yīng)的代碼[未登錄](méi) 2011-04-04 19:01 vincent

            你可以把一個(gè)handle比喻成一個(gè)內(nèi)核對(duì)象在內(nèi)核中的數(shù)組索引,當(dāng)然,也許這個(gè)handle是索引處理過(guò)的東西
            內(nèi)核對(duì)象身上自然存儲(chǔ)的有它相關(guān)的一些資源,屬性或信息  回復(fù)  更多評(píng)論   

            # re: 操作系統(tǒng)怎么根據(jù)一個(gè)HWND句柄,找到相應(yīng)的代碼[未登錄](méi) 2011-04-04 19:02 vincent

            我又2了。。沒(méi)仔細(xì)看題。。。真的要檢討了。。
            同好奇。。  回復(fù)  更多評(píng)論   

            # re: 操作系統(tǒng)怎么根據(jù)一個(gè)HWND句柄,找到相應(yīng)的代碼 2011-04-07 14:54 flagman

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

            引申出去,常見(jiàn)很多人問(wèn),“某某技術(shù)要學(xué)嗎”“某某庫(kù)、框架要摸索一下嗎”,真要把某個(gè)技術(shù)、庫(kù)等等研究透了,就常常會(huì)發(fā)現(xiàn)有許多設(shè)計(jì)思路和方法是相似的。  回復(fù)  更多評(píng)論   

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

            導(dǎo)航

            統(tǒng)計(jì)

            常用鏈接

            留言簿(1)

            隨筆分類

            隨筆檔案

            搜索

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            99麻豆久久久国产精品免费| 97久久香蕉国产线看观看| 亚洲精品国产综合久久一线| 久久久www免费人成精品| 亚洲精品无码专区久久久| 精品永久久福利一区二区| 国产精品综合久久第一页| 人妻无码精品久久亚瑟影视| 久久精品国产一区| 中文字幕乱码人妻无码久久| 青青草原1769久久免费播放| 久久久久亚洲av毛片大| 国产精品久久久久影院色| 精品久久久一二三区| 久久er国产精品免费观看8| 久久精品国产亚洲AV无码麻豆| 国产A级毛片久久久精品毛片| 亚洲欧洲久久av| 国产精品va久久久久久久| 国产精品99精品久久免费| 久久精品国产亚洲AV久| 久久涩综合| 久久91精品综合国产首页| 久久久青草青青亚洲国产免观| 久久精品国产免费观看| 综合久久一区二区三区| 欧美性大战久久久久久| 久久久久九九精品影院| Xx性欧美肥妇精品久久久久久| 精品精品国产自在久久高清| 久久久久亚洲精品无码蜜桃| 久久99热这里只有精品国产| 少妇无套内谢久久久久| 伊人情人综合成人久久网小说| 久久九九久精品国产免费直播| 国产国产成人精品久久| 久久w5ww成w人免费| 国产亚洲婷婷香蕉久久精品| 久久亚洲欧美日本精品| 日本久久久久久中文字幕| 亚洲一区中文字幕久久|