积极答复者
请教vb6鼠标滚轮事件在win10下运行问题

问题
-
下面代码,在xp系统和win7系统下,只要text1或text2控件获得焦点,鼠标在任何位置滚动滚轮都正常执行代码。但是,在win10系统下运行,当text1或text2获得焦点后,鼠标必须在获得焦点的控件范围内,才能执行滚轮代码,离开后则不执行。求帮忙解决!谢谢!!!
'模块
Option Explicit
Public Const GWL_WNDPROC = (-4)
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 GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex 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 prevWndProc As Long
Dim t As Boolean
Function WndProc(ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If Msg = 522 Then
If wParam > 0 Then
If Form1.Label1.Caption = "1" Then
Form1.Text1.Text = Form1.Text1.Text + 1
Else
Form1.Text2.Text = Form1.Text2.Text + 1
End If
Else
If Form1.Label1.Caption = "1" Then
If Form1.Text1.Text > 0 Then Form1.Text1.Text = Form1.Text1.Text - 1
Else
If Form1.Text2.Text > 0 Then Form1.Text2.Text = Form1.Text2.Text - 1
End If
End If
End If
WndProc = CallWindowProc(prevWndProc, hWnd, Msg, wParam, lParam)
End Function
'窗体
Option Explicit
Private Sub Text1_GotFocus()
Label1.Caption = 1
Text1.Text = "0"
prevWndProc = GetWindowLong(Text1.hWnd, GWL_WNDPROC)
SetWindowLong Text1.hWnd, GWL_WNDPROC, AddressOf WndProc
End Sub
Private Sub Text1_LostFocus()
SetWindowLong Text1.hWnd, GWL_WNDPROC, prevWndProc
End Sub
Private Sub Text2_GotFocus()
Label1.Caption = 2
Text2.Text = "0"
prevWndProc = GetWindowLong(Text2.hWnd, GWL_WNDPROC)
SetWindowLong Text2.hWnd, GWL_WNDPROC, AddressOf WndProc
End Sub
Private Sub Text2_LostFocus()
SetWindowLong Text2.hWnd, GWL_WNDPROC, prevWndProc
End Sub
答案
全部回复
-
你好,
根据你的描述,这个应该是开发相关的问题。建议发帖至开发者论坛,他们或许更熟悉此类问题。
如果我的回复对你有帮助,请将其标记为答案。
针对Windows 2008/2008R2的扩展支持已于2020年1月结束,微软不再为其提供安全更新。点击此处或扫描二维码获取《在 Azure 上运行 Windows Server 的终极指南》,把握良机完成云迁移并实现业务现代化。
-
由于该论坛的英文版活跃度比较高,您还可以在英文论坛发帖提问。
或者您可以使用下列链接开有偿付费咨询。
https://support.microsoft.com/zh-cn/assistedsupportproducts
由于您的问题并不是我们所能支持的范围,所以仅能提供以上途径进行咨询,感谢您的理解。
针对Windows 2008/2008R2的扩展支持已于2020年1月结束,微软不再为其提供安全更新。点击此处或扫描二维码获取《在 Azure 上运行 Windows Server 的终极指南》,把握良机完成云迁移并实现业务现代化。