vb6.0窗体中的vscroll控件无法响应鼠标滚轮事件,请教方法

vb6.0中的vscroll控件无法响应鼠标滚轮事件,求解决方法

1。下载vb6mousewheel.exe文件,解压有以下文件

img


2.将文件 VB6IDEMouseWheelAddin.dll 拷贝到 C:\Windows\SysWOW64 下
3.按win+R打开运行输入cmd进入dos ,输入cd C:\Windows\SysWOW64 ,进入此目录后,运行regsvr32 VB6IDEMouseWheelAddin.dll ,如注册成功后,进入vb6
4.点开外接程序后,选中图中下划线部分,没勾的勾上。即可

img

我列举步骤给你,希望对你有帮助
1、在Vb6.0窗体中添加一个模块,在模块中添加以下代码:

Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Public Const VK_SCROLL = &H91

2、在Vb6.0窗体中添加一个Timer控件,将Interval属性设置为100,将Enabled属性设置为True,并将Timer控件的Timer事件绑定以下代码:

Private Sub Timer1_Timer()
If GetAsyncKeyState(VK_SCROLL) <> 0 Then
If GetAsyncKeyState(vbKeyDown) <> 0 Then
VScroll1.Value = VScroll1.Value + 1
ElseIf GetAsyncKeyState(vbKeyUp) <> 0 Then
VScroll1.Value = VScroll1.Value - 1
End If
End If
End Sub

3、运行程序,即可实现VScroll控件响应鼠标滚轮事件。

望采纳!!

鼠标滚轮事件在 Visual Basic 6.0 IDE 中不起作用,解决办法:

方法一: 下载 VB6 鼠标 Wheel.exe文件,其中包含外接程序 DLL 和用于创建外接程序 DLL 的代码。
1、下载 VB6 鼠标 Wheel.exe文件。
2、依次单击“开始”、“运行”,键入 ,然后单击“确定”。regsvr32 <path>\VB6IDEMouseWheelAddin.dll
3、启动 Visual Basic 6.0。
4、单击“Add-Ins (外接程序)”,然后单击“Add-in Manager (外接程序管理器)”。
5、在“Add-in Manager (加载项管理器)” 列表中,单击“MouseWheel Fix (鼠标滚轮修复)”。
6、单击以选中 【Loaded/Unloaded (加载/卸载)】 复选框,然后单击以选中【Loaded/Unloaded (加载/卸载)】 复选框。
7、单击“确定”。

你还可以在 Visual Basic 6.0 中生成外接程序 DLL。
如果执行此操作,将自动注册外接程序 DLL。
然后,可以按照步骤 4 到 7 启用外接程序 DLL。
若要生成外接程序 DLL,请单击“文件”菜单上的“生成 VB6IDEMouseWheelAddin.dll。

注意:
你还可以在大多数 VBA 环境中使用此加载项。如前所述安装外接程序,使用以下值创建 .reg 文件,并将其与注册表合并。

Windows 注册表编辑器版本 5.00:
HKEY_CURRENT_USER\Software\Microsoft\VBA\VBE\6.0\Addins\VB6IDEMouseWheelAddin.Connect

"FriendlyName"="MouseWheel Fix"
"CommandLineSafe"=dword:00000000
"LoadBehavior"=dword:00000000

注意:
如果将这些键放在HKEY_LOCAL_MACHINE下,则可能会忽略这些键。

方法二

返回到早期版本的 Microsoft IntelliPoint 软件。请按照下列步骤操作:

如果计算机上安装的智能点软件是版本 4.9 或更高版本,请从计算机中删除智能点软件。
安装 IntelliPoint 软件版本 4.12。

VScroll 控件在 VB6.0 中默认不支持鼠标滚轮事件。但是,你可以使用 API 函数来解决这个问题。可以使用 Windows API 函数 "GetSystemMetrics" 和 "GetAsyncKeyState" 来检测鼠标滚轮事件。

下面是一个示例代码,你可以在 VB6.0 中的 Form 中的 Load 事件中添加这段代码来实现鼠标滚轮事件的监听。


' Declare the API functions and constants
Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Private Const SM_MOUSEWHEELPRESENT = 75
Private Const VK_MBUTTON = &H4

' In the Form_Load event:
If (GetSystemMetrics(SM_MOUSEWHEELPRESENT) <> 0) Then
    ' Register the mouse wheel event
    ' You can add your own code here to handle the event.
    ' eg: VScroll1.Value = VScroll1.Value - 120
    AddHandler Me.MouseWheel, AddressOf Form_MouseWheel
End If

' Create the event handler
Private Sub Form_MouseWheel(ByVal sender As Object, ByVal e As MouseEventArgs)
    If (GetAsyncKeyState(VK_MBUTTON) And &H8000) = &H8000 Then
        ' Handle the event
        ' You can add your own code here to handle the event.
        ' eg: VScroll1.Value = VScroll1.Value - 120
    End If
End Sub

这段代码会在窗体上注册一个鼠标滚轮事件的处理程序。当鼠标滚轮事件发生时,事件处理程序会检查鼠标中键是否被按下。如果被按下,那么你可以在事件处理程序中添加你自己的代码来处理滚轮事件。

VB 6.0 中可以通过在 Form 窗体上添加一个 PictureBox 控件,并在其中添加 Vscroll 控件来实现鼠标滚轮事件。

代码示例如下:

Private Sub Form_Load()
'添加 PictureBox 控件
Dim picBox As New PictureBox
Set picBox = Me.Controls.Add("VB.PictureBox", "picBox")
picBox.Width = 100
picBox.Height = 100

'添加 Vscroll 控件
Dim vScroll As New VScrollBar
Set vScroll = picBox.Controls.Add("VB.VScrollBar", "vScroll")
vScroll.Width = 15
vScroll.Height = picBox.Height

'鼠标滚轮事件
picBox.MouseWheel vScroll.Value
End Sub

Private Sub picBox_MouseWheel(ByVal Page As Boolean, ByVal Count As Long)
vScroll.Value = vScroll.Value - Count
End Sub

在上面的代码中,我们首先在 Form 窗体上添加了一个 PictureBox 控件,然后在其中添加了一个 Vscroll 控件。接下来我们在 PictureBox 控件上添加了鼠标滚轮事件,在事件中设置 Vscroll 控件的值。

可以尝试以下方法:
1.在Form MouseWheel事件中手动模拟滚动操作;
2.在Form上使用一个父容器控件,如PictureBox,并在其MouseWheel事件中处理滚动
操作;
3.在系统设置中更改鼠标设置,以支持滚轮事件。

在VB 6.0中,VScroll 控件本身不支持鼠标滚轮事件,但您可以通过以下步骤实现:

在窗体上添加一个模块,并在其中定义一个 Windows API 函数,以便响应鼠标滚轮事件。

在窗体的 Form_Load 事件中调用该函数,以将鼠标滚轮事件转发到 VScroll 控件。

在窗体的 MouseWheel 事件中处理鼠标滚轮事件,以移动 VScroll 控件。

以下是代码示例:


Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Const GWL_STYLE = (-16)
Private Const WS_VSCROLL = &H200000

Private Sub Form_Load()
  Dim lStyle As Long
  lStyle = GetWindowLong(Me.hwnd, GWL_STYLE)
  lStyle = lStyle Or WS_VSCROLL
  Call SetWindowLong(Me.hwnd, GWL_STYLE, lStyle)
End Sub

Private Sub Form_MouseWheel(ByVal Page As Boolean, ByVal Count As Long)
  On Error Resume Next
  Me.VScroll1.Value = Me.VScroll1.Value - Count
End Sub

img