VB中子分類技術的應用 (轉)
子分類技術的原理:要先取得原先Window Procedure所在的地址,將之記錄起來,接著設定所有的訊息都先轉到我們所寫的訊息處理過程上來,我們過濾傳過來的訊息,尋找特定的訊息進行處理,其餘的送回,由系統決定如何處理。等到我們不需要再處理這些特定的訊息時,便取消訊息的擷取,即中止子分類過程。它一般需要三個過程:開始擷取,訊息處理,中止擷取.
需要一個模組,在模組中宣告如下:
'Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
(ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) A s Long Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _
(ByVal hwnd As Long, ByVal nIndex As Long) As Long Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" _
(ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long
'定義常數Public Const GWL_WNDPROC = (-4) Public Const WM_MOUSEMOVE = &H200 Public Const WM_RBUTTONDOWN = &H204
'全域性變數,存放標誌性資料Public preWinProc As Long
'本函式就是用來接收子分類時擷取的訊息的Public Function wndproc(ByVal hwnd As Long, ByVal Msg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As
Long
'擷取下來的訊息存放在msg引數中.
if msg=WM_RBUTTONDOWN then
'檢測到滑鼠右擊訊息,這裡就可以加入我們的處理程式碼如:
msgbox "你好,滑鼠右擊訊息!"
'需要注意,如果這兒不加入任何程式碼,則相當於吃掉了這條訊息. else
'如果我們不是我們需要處理的訊息,則將之送回原來的程式.
wndproc = CallWindowProc(preWinProc, hwnd, Msg, wParam, lParam) endif End Function
'以下程式碼在窗體中: '本例以擷取一個combobox控制元件的訊息為例,假設該'控制元件的名字是:comb1 Private Sub subclass() Dim ret As Long
'記錄Window Procedure的地址
preWinProc = GetWindowLong(comb1.hwnd, GWL_WNDPROC)
'開始擷取訊息,並將訊息交給wndproc過程處理.
ret = SetWindowLong(comb1.hwnd, GWL_WNDPROC, AddressOf wndproc) End Sub
Private Sub EndSubclass()
Dim ret As Long
'取消訊息擷取,結束子分類過程.
ret = SetWindowLong(comb1.hwnd, GWL_WNDPROC, preWinProc) End Sub
'當要擷取其它控制元件的訊息時,只需要將subclass與EndSubclass過程中的comb1.h wnd換成該控制元件的控制元件.hwnd即可. '過程中注意存檔,因為如果一時不慎會造成當機
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-988748/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 佩羅的技術分類(轉載)
- WMI技術的應用 (轉)
- 5G+人工智慧技術在垃圾分類中的應用人工智慧
- VB.net中HOOK的應用(二) (轉)Hook
- 虛擬化有哪些分類?Linux雲端計算技術及應用Linux
- 搜尋推薦技術在電商導購領域的應用(三):自動分類
- 從VB 6到VB.NET——窗體特殊應用 (轉)
- DirectShow技術描述與應用(3) (轉)
- DirectShow技術描述與應用(2) (轉)
- 樸素貝葉斯分類器的應用(轉載)
- VB實現抽象類 (轉)抽象
- 汪子熙的SAP技術文章分類合集
- 資料倉儲技術分類術語
- 如果IT技術按照兵種分類
- 透過開發VB外掛來擴充套件VB應用 (轉)套件
- 差分隱私技術在火山引擎的應用實踐
- Embedding技術與應用(3):Embeddings技術的實踐應用
- java反射技術的應用Java反射
- 用VB編寫一個彈出選單類 (轉)
- GIFTO背後區塊鏈技術的分類區塊鏈
- 運維+DBA需要了解的技術分類運維
- 構件技術在MIS開發中的應用(轉)
- Linux下備份恢復技術的應用(轉)Linux
- 用VB編寫COM+應用時碰到問題? (轉)
- SOA技術標準的應用
- 統計技術在質量管理中的應用(轉載)
- 軟體相關技術及其在國內的應用 (轉)
- VR技術用於學前教育 VR技術的跨界應用!VR
- 量化技術分析應用
- 無線技術應用
- Java中子類構造時可以做的事Java
- ASP分頁技術原始碼 (轉)原始碼
- Windows下DLL程式設計技術及應用 (轉)Windows程式設計
- 保證應用程式中私有物件安全技術(轉)物件
- OVS+DPDK Datapath 包分類技術
- VB作品展技術總結
- VB環境下壓縮資料流播放技術(1) (轉)
- VB環境下壓縮資料流播放技術(2) (轉)