'添加一个模块module,复制粘贴如下代码: '此模块包含自定义窗体消息处理函数,拦截WM_MOUSEWHEEL鼠标滚轮滚动消息,做自己的处理 '声明 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 Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Public Const GWL_WNDPROC = (-4) Public Const WM_MOUSEWHEEL = &H20A Public PrevWndProc As LongFunction WndProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long '写自己处理鼠标滚动的事件,这里让Form上下滚动 Dim t(0 To 1) As Integer If uMsg = WM_MOUSEWHEEL Then If wParam < 0 Then '向后滚 Form1.Text1.Text = "zoom in" Else '向前滚 Form1.Text1.Text = "zoom out" End If Else WndProc = CallWindowProc(PrevWndProc, hwnd, uMsg, wParam, lParam) '让Windows处理其他事件 End If End Function '窗体中的代码 Private Sub Form_Load() '使自定义消息处理函数WndProc成为窗体的消息处理函数 PrevWndProc = SetWindowLong(Me.hwnd, GWL_WNDPROC, AddressOf WndProc) End SubPrivate Sub Form_Unload(Cancel As Integer) Dim lResult As Long '窗体的消息处理函数还原为Windows默认的函数 lResult = SetWindowLong(Me.hwnd, GWL_WNDPROC, PrevWndProc) End Sub
我给你的chm文件有写,你直接用就可以了
setwindowlong函数功能:改变指定窗口的属性,并把一个32位值(long)放在窗口附加存储空间的指定偏移位置函数原型:long SetWindowLong( HWND hWnd, int nIndex, LONG dwNewLong ); 这个你要用的时候用vb的工具里的API浏览,英文版不知道应该怎么说,需要加载win32api.txt文件里面找这个函数就ok了不需要自己打了
'此模块包含自定义窗体消息处理函数,拦截WM_MOUSEWHEEL鼠标滚轮滚动消息,做自己的处理
'声明
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
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Const GWL_WNDPROC = (-4)
Public Const WM_MOUSEWHEEL = &H20A
Public PrevWndProc As LongFunction WndProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long '写自己处理鼠标滚动的事件,这里让Form上下滚动
Dim t(0 To 1) As Integer
If uMsg = WM_MOUSEWHEEL Then
If wParam < 0 Then '向后滚
Form1.Text1.Text = "zoom in"
Else '向前滚
Form1.Text1.Text = "zoom out"
End If
Else
WndProc = CallWindowProc(PrevWndProc, hwnd, uMsg, wParam, lParam) '让Windows处理其他事件
End If
End Function
'窗体中的代码
Private Sub Form_Load()
'使自定义消息处理函数WndProc成为窗体的消息处理函数
PrevWndProc = SetWindowLong(Me.hwnd, GWL_WNDPROC, AddressOf WndProc)
End SubPrivate Sub Form_Unload(Cancel As Integer)
Dim lResult As Long
'窗体的消息处理函数还原为Windows默认的函数
lResult = SetWindowLong(Me.hwnd, GWL_WNDPROC, PrevWndProc) End Sub
HWND hWnd,
int nIndex,
LONG dwNewLong
);
这个你要用的时候用vb的工具里的API浏览,英文版不知道应该怎么说,需要加载win32api.txt文件里面找这个函数就ok了不需要自己打了
nIndex 指定要设置的大于等于0的偏移值
GWL_WNDPROC: 为窗口过程设定一个新的地址CallWindowProc
函数过程:将消息传送给指定的窗口程序