• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    用窗口子類化技術改進Windows編輯框控件的功能

    發布: 2007-7-14 21:11 | 作者: 佚名    | 來源: 網絡轉載     | 查看: 16次 | 進入軟件測試論壇討論

    領測軟件測試網 作者:張俊鋒、崔華鋒 

     1.問題的提出

      盡管Windows系統提供了豐富的通用控件(如按鈕,編輯框,滑動條等),但仍不可能滿足我們實際應用中千差萬別的需求,筆者在某項目的開發工作中就遇見了這樣的問題。項目需要一個供用戶輸入表格數據的接口界面,要求只接收用戶輸入的數據信息,并可以利用鍵盤上的光標鍵移動輸入位置以避免用戶在鍵盤和鼠標之間的頻繁切換。簡單地使用Windows的編輯框控件不僅不能對輸入字符進行有效過濾(如果給編輯框控件加上ES_NUMBER風格則只能接收0~9之間的數字而不能接收小數點正負號等需要的字符),而且無法移動控件。如果重起爐灶自己編程來實現,其工作量是相當可觀的。為此,筆者經多次嘗試,終于通過采用窗口子類化方法,很好地解決了上述問題。

      2.窗口子類化方法

      應用程序為了登記一個窗口類,首先要填寫好一個WNDCLASS結構,其中的結構參數lpfnWndProc就是該類窗口函數的地址,接著調用RegisterClass()函數向Windows系統申請登記這個窗口類。這時Windows會為其分配一塊內存來存放該類的全部信息,這個內存塊稱為窗口類內存塊。

      當應用程序要創建一個屬于某一已登記窗口類的窗口時,Windows便為這個窗口分配一塊內存,即窗口內存塊,用來存放與該窗口有關的專用信息。這些信息一部分來自傳遞給窗口創建函數CreateWindow()或CreateWindowEx()的參數信息,另一部分則來自所屬窗口類的窗口類內存塊,其中參數lpfnWndProc便被Windows從窗口類內存塊復制到為新創建窗口分配的窗口內存塊中。當有消息被發送到這個窗口時,Windows檢查該窗口內存塊中的窗口函數地址(lpfnWndProc),并調用該地址上的函數來處理這些消息。

      所謂窗口子類化,實際上就是改變窗口內存塊中的有關參數。由于這種修改只涉及到一個窗口的窗口內存塊,因此它不會影響到屬于同一窗口類的其它窗口的功能和表現。窗口子類化中最常見的是修改窗口內存塊中的窗口函數地址(lpfnWndProc),使其指向一個新的窗口函數,從而改變原窗口函數的處理方法,改進其功能。其基本步驟如下:

     。1)編寫子類化窗口函數。該函數必須為標準的窗口函數格式即:

      LRESULT CALLBACK SubClassWndProc ( HWND , UINT , WPARAM , LPARAM ) ;

      在這個函數中對感興趣的消息進行處理,而把未處理或者需要原窗口函數進一步處理的消息傳送給原窗口函數;

     。2)利用待子類化窗口的句柄hWnd,調用GetWindowLong ( hWnd , GWL_WNDPROC ) 函數獲得原窗口函數的地址并保存起來;

     。3)調用SetWIndowLong ( hWnd , GWL_WNDPROC , SubClassWndProc ) 把窗口函數設置成子類化窗口函數,完成窗口子類化。

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>