7,763
社区成员
发帖
与我相关
我的任务
分享
Public m_lpVBWndProc As Long
Private Sub Form1_Load()
'Hook
SetHook Me, AddressOf Form1_MyWindowProc
End Sub
'Hook
Public Const WM_MOUSEWHEEL = &H20A
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 Function SetHook(frmHookForm As Form, lpWinProc As Long) As Long
If lpWinProc = 0 Then Exit Function
frmHookForm.m_lpVBWndProc = SetWindowLong(frmHookForm.hwnd, GWL_WNDPROC, lpWinProc)
End Function
Function Form1_MyWindowProc(ByVal hw As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
'消息处理
Select Case uMsg
Case WM_MOUSEWHEEL
msgbox ""
End Select
'让VB默认的处理函数处理
mdiViewForm_MyWindowProc = CallWindowProc(m_lpVBWndProc, hw, uMsg, wParam, lParam)
End Function
建个类
public event MyOnComm
sub MSComm1_OnComm()
raiseevent MyOnComm
end sub