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

            旅途

            如果想飛得高,就該把地平線忘掉

            超類化與子類化

            面試的時候被問到這個問題, 覺得越來越象白癡,什么都不知道.

             

            子類化:

            子 類化是這樣一種技術,它允許一個應用程序截獲發往另一個窗口的消息。一個應用程序通過截獲屬于另一個窗口的消息,從而實現增加、監視或者修改那個窗口的缺 省行為。子類化是用來改變或者擴展一個已存在的窗口的行為、而不用重新開發的有效途徑。想要獲得那些預定義控件窗口類(按鈕控件、編輯控件、列表控件、下 拉列表控件、靜態控件和滾動條控件)的功能而又要修改它們的某些行為的一個便利的方法就是對它們進行子類化。例如,對于一個在對話框中的多行編輯框來說, 當用戶按下Enter鍵時,對話框會關閉。通過對編輯控件子類化,一個應用程序就能擁有一個可以往文本中插入回車和換行,而同時又不會關閉對話框的編輯控件,應用程序不用為這個特殊的需要而去專門開發一個編輯控件。

            以上內容來自:不吃魚的貓 http://tonybain.cnblogs.com/archive/2006/01/19/320366.html

            提示: 子類化只能用來更改本進程之內的控件,但是你可以通過一個附加到其他進程的dll來加入的其他進程中.

            可 以利用LoadLibrary來實現(之前把自己準備好的 dll路徑用 WriteProcessMemory 寫入到目標進程中,然后再用GetProcAdress得到LoadLibrary的地址 (kernel32.dll總是被裝入到同一個地方..),最后用CreateRemoteThread建立線程......只要在我們準備的dll中的 DllMain完成我們想要的操作..呵呵....)

            例如,利用這個獲得標準控件的輸入....

            以上內容來自: Kruglinski  http://www.vckbase.com/document/viewdoc/?id=1515

             

            超類化:

            在你的程序生涯中你肯定遇到過這樣的情況,你需要一系列的控件,但它們之間卻只有一點點的不同。例如,你可能需要10個只接受數字的 Edit 控件,當然你可以通過多種方法來達到這個目的。

            1. 創建自己的類并用它實例化為那些控件
            2. 創建那些 Edit 控件并把它們全部子類化
            3. 超類化Edit 控件

            第 一種方法太乏味了,因為你必須自己實現Edit 控件的每個功能,但這項工作不是輕松就能完成的。第二種方法好于第一種,但仍然要做許多工作,子類化幾個Edit 控件還可以接受,但若要子類化十幾二十個,這項工作簡直就是一場惡夢。在這種情況下就應該使用超類化這個技巧,它是用于控制某一個特定窗口類的特殊方法。 通過這種控制就可以修改窗口類的特性使之符合你的要求,然后再創建那一堆控件就可以了。

            超類化有如下幾個步驟:

            1. 通過調用 GetClassInfoEx 來獲得想要進行超類化操作的窗口類的信息。函數GetClassInfoEx 需要一個指向 WNDCLASSEX 結構的指針,用于當成功返回時填入窗口類的信息。
            2. 按需要修改 WNDCLASSEX 結構的成員,其中有兩個成員必須修改:
              hInstance 存放程序的實例句柄
              lpszClassName 指向一個新類名的指針
              不必修改成員 lpfnWndProc,但大多數情況下還是需要的。但要記住如果要使用函數 CallWindowProc 調用老窗口的過程,那就必須保存成員 lpfnWndProc 的原值。
            3. 注冊修改完的 WNDCLASSEX 結構,得到一個具有舊窗口類某些特性的新窗口類。
            4. 用新窗口類創建窗口

            如果要創建具有相同特性的多個控件,超類化就比子類化要好。

            以上內容來自:Iczelion的Win32匯編教程(17-24)

             

            總結:

            子類化適合于需要修改 少量窗口 的屬性的情況,超類化適合于需要修改 多個窗口 的屬性的情況.

            而他們的相同之處在于: 兩個方法都是在原有的控件上做少量的修改.

            posted on 2007-07-18 00:50 旅途 閱讀(604) 評論(0)  編輯 收藏 引用 所屬分類: 深入windows

            人妻精品久久无码区| 国产精品免费福利久久| 欧美一区二区精品久久| 久久久久久久久久久久中文字幕| 亚洲国产成人久久一区久久| Xx性欧美肥妇精品久久久久久| 久久99精品久久久久久动态图| 蜜臀久久99精品久久久久久小说| 久久久久久午夜精品| 无码精品久久久久久人妻中字| 国产精品久久久久久久人人看| 国产精品乱码久久久久久软件| 一级a性色生活片久久无| 精品伊人久久久| 久久ww精品w免费人成| 伊人久久大香线蕉影院95| 国产福利电影一区二区三区久久老子无码午夜伦不 | 国内精品久久久久影院薰衣草| 久久丫忘忧草产品| 久久久久亚洲AV成人片| 亚洲国产成人久久精品动漫| 欧美午夜A∨大片久久| 亚洲午夜久久久久久噜噜噜| 久久久久久午夜成人影院 | 亚洲精品无码久久不卡| 久久久久青草线蕉综合超碰| 久久精品国产亚洲av高清漫画 | 国产精品女同一区二区久久| 久久久久这里只有精品| 亚洲级αV无码毛片久久精品 | 伊人久久大香线蕉av不卡| 精品久久久噜噜噜久久久| 久久久久无码国产精品不卡| 日韩AV无码久久一区二区 | 国产精品美女久久久m| 久久精品国产WWW456C0M| 人妻精品久久久久中文字幕69 | 青草影院天堂男人久久| 久久久久久久91精品免费观看| 97久久天天综合色天天综合色hd| 久久精品国产亚洲精品|