检测鼠标横向滚轮移动

3
我正在使用鼠标滚轮在我的DotNet应用程序中进行操作,我是按照以下步骤完成的: MSDN MouseWheel example 但是,在我的应用程序中,如果能够同时使用现有的硬件水平鼠标滚轮,那将会很好。但是在.Net中如何检测到这种情况呢?
我正在使用Logitech RX1500m-RAG97enter image description here 祝好,
-
* 解决方案 *
重写WinProc以捕获鼠标滚轮事件。
MustInherit Class Win32Messages
    Public Const WM_MOUSEHWHEEL As Integer = &H20e
    'discovered via Spy++
End Class



Protected Overrides Sub WndProc(ByRef m As Message)
    MyBase.WndProc(m)
    If m.HWnd <> Me.Handle Then
        Return
    End If
    Select Case m.Msg
        Case Win32Messages.WM_MOUSEHWHEEL
            FireMouseHWheel(m.WParam, m.LParam)
            m.Result = DirectCast(1, IntPtr)
            Exit Select
        Case Else
            Exit Select

    End Select
End Sub

什么是水平滚轮?你用的是什么样的鼠标? - Davide Piras
我已经添加了图片和示例设备。 - Nasenbaer
嗨,Nasenbaer,我看到你仍然是一个活跃的SO会员,所以希望你能回复我。我正在尝试在VB.NET 2010应用程序中完成这个任务。我已经转换了CodeNaked发布帖子中的所有代码。但是我在第一个FireMouseWheel子例程的第一行遇到了问题—— Dim tilt As Int32 = DirectCast(Utils.HIWORD(wParam), Int16)。它显示错误“值类型为'整数'无法转换为'短整型'”,并突出显示Utils.HIWORD(wParam)`。我认为您一定已经克服了这一障碍,因此如果您能给我一点指导,我将不胜感激。干杯! - Antagony
不用担心,我已经解决了。我用CType替换了DirectCast函数,现在它可以工作了——尽管在关闭窗体后,我也遇到了一个ObjectDisposedException错误,所以我不得不在顶部添加一行代码来检查IsDisposed属性。 - Antagony
1个回答

3
这篇博客文章展示了如何为WinForms应用程序添加支持。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接