想做一個控制元件,得到不到方向鍵訊息
以下在控制元件視窗:
Dim CtlHwnd As Long
Private Sub UserControl_Show()
If UserControl.Ambient.UserMode Then '運行時
CtlHwnd = UserControl.hwnd
preWndProc = SetWindowLong(CtlHwnd, GWL_WNDPROC, AddressOf WindowProc)
End If
End Sub
Private Sub UserControl_Terminate()
Call SetWindowLong(CtlHwnd, GWL_WNDPROC, preWndProc)
End Sub
在下在控制元件的模塊
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public 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 preWndProc As Long
Public Function WindowProc(ByVal hwnd As Long, ByVal iMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Static kk As Long
kk = kk + 1
If kk > 10 Then kk = 0
Debug.Print kk
WindowProc = CallWindowProc(preWndProc, hwnd, iMsg, wParam, lParam)
End Function
將控制元件放在正常的FORM上,其他的鍵盤訊息基本能截取,就是方向鍵沒有反應。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/216325.html
標籤:VB基礎類
