免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
什么是窗口的子類化
如果你曾經(jīng)在 Windows 環(huán)境下編過程序,有時候就會發(fā)現(xiàn):有一個現(xiàn)成的窗口,幾乎有你所需要的全部功能,但還不完全一樣。如果你需要一個具有過濾特殊字符功能的 Edit 控件。當然最直接的方法就是自己用代碼來實現(xiàn),但這的確是一個費時又很困難的任務,而子類化就可以用來做這種事情?!  ∽宇惢试S你接管被子類化的窗口,使你對它有絕對的控制權。舉個例子了來闡明一下:例如你需要一個只接受十六進制數(shù)字輸入的文本編輯框,如果使用一個簡單的 Edit控件,當用戶輸入十六進制以外的字符時,你既不知道也無計可施。也就是說,當用戶進文本框中輸入字符串
  現(xiàn)在來解釋實現(xiàn)細節(jié):當用戶往文本框中輸入字符時,Windows 會給Edit控件的窗口函數(shù)發(fā)送WM_CHAR 消息。這個窗口函數(shù)本身寄生于 Windows 中,因此不能直接修改它。但是我們可以重定向這個消息使之發(fā)送到我們自己編寫的窗口處理函數(shù)。如果自定義窗口要處理這個消息那就可以處理它,如果不處理就可以把這個消息轉發(fā)到它原來窗口處理函數(shù)。通過這種方式,自定義的窗口處理函數(shù)就把它自己插入到 Windows 系統(tǒng)和 Edit 控件之間。
說明  看下面的流程:
  窗口子類化之前
  Windows ==Edit控件的窗口處理函數(shù)。
  子類化之后
  Windows ==自定義的窗口處理函數(shù)== Edit 控件的窗口處理函數(shù)。
,那Windows 不就把消息發(fā)到自定義的窗口函數(shù)了嗎! 我們通過調用函數(shù)SetWindowLong 來實現(xiàn)這個任務,此函數(shù)的原型為:
  SetWindowLong PROTOhWnd:DWORD, nIndex:DWORD, dwNewLong:DWORD
  hWnd = 將要實施子類化的窗口的句柄 nIndex = 函數(shù)了功能索引
  GWL_EXSTYLE 設置窗口的擴展風格.
  GWL_STYLE 設置新的窗口風格
  GWL_WNDPROC 設置新的窗口處理函數(shù)地址
  GWL_HINSTANCE 設置新的應用程序句柄
  GWL_ID 設置新的窗口標識
  GWL_USERDATA 設置一個與這個窗口相關的給用戶使用的32位的數(shù)據(jù) dwNewLong = 用來更新的數(shù)據(jù) 我們的工作還是比較簡單的:
  寫一個窗口函數(shù)用于處理發(fā)給 Edit 控件的消息。 用參數(shù)GWL_WNDPROC調用SetWindowLong 函數(shù),如果調用成功那么返回值就是與調用功能相聯(lián)系的一個32位的整數(shù) 在我們的程序中,返回值就是原先窗口函數(shù)的地址。我們要保存這個值以便以后使用。 記住:有一些我們不處理的消息,需要把它們派遣給原來的窗口函數(shù)來處理,這就用到另外一個函數(shù) CallWindowProc, 函數(shù)原型為:
  lpPrevWndFunc = 窗口原來函數(shù)的地址. 剩下的四個參數(shù)就是發(fā)給自定義函數(shù)的參數(shù),直接把它們傳給函數(shù) CallWindowProc 就行了。
本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
走出MFC窗口子類化的迷宮
MFC編程中的窗口子類化淺析
窗口子類化_改變控件的窗口處理函數(shù)
(全)
在VB的ListView中動態(tài)加載記錄
自定義VB系統(tǒng)控件
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服