VB鼠标滚轴控制滚动条

添加一个窗体
在窗体上添加一个垂直滚动条
名字就默认即可
然后粘贴如下代码:

Private Sub Form_Load()
OldProcAddr = SetWindowLong(Me.hwnd,GWL_WNDPROC,AddressOf MyWinProc)
End Sub
然后添加一个模块
粘贴如下代码:
Public Const GWL_WNDPROC = (-4)
Public Const WM_MOUSEWHEEL = &H20A
Public OldProcAddr As Long
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 MyWinProc(ByVal hwnd As Long,ByVal wp As Long,ByVal lp As Long) As Long
If msg <> WM_MOUSEWHEEL Then
MyWinProc = CallWindowProc(OldProcAddr,hwnd,msg,wp,lp)
Else
Debug.Print msg
Dim s As String
s = Hex(wp)
If Len(s) < 8 Then s = String(8 - Len(s),"0") & s
Dim zDelta As Long
zDelta = CInt("&h" & Left(s,4)) * (-1)
If Form1.VScroll1.Value + zDelta < Form1.VScroll1.Min Then
Form1.VScroll1.Value = Form1.VScroll1.Min
ElseIf Form1.VScroll1.Value + zDelta > Form1.VScroll1.Max Then
Form1.VScroll1.Value = Form1.VScroll1.Max
Form1.VScroll1.Value = Form1.VScroll1.Value + zDelta
End If
End Function

相关文章

Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强...
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办...
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace...
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用...
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选...
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As Dat...