【问题标题】:How to detect mouse wheel tilt?如何检测鼠标滚轮倾斜?
【发布时间】:2023-03-17 06:53:01
【问题描述】:

要检测 .NET/WinForms 中鼠标滚轮的旋转,我可以覆盖 OnMouseWheel点击可以通过覆盖OnMouseDown(它只是Middle按钮)来检测。但是如何检测滚轮的倾斜(向左/向右倾斜以进行水平滚动)?当我倾斜鼠标滚轮时,OnMouseWheelOnMouseDown 都不会被调用。

【问题讨论】:

  • Marc 的解决方案运行良好。谢谢!

标签: c# .net vb.net winforms


【解决方案1】:

覆盖here;简而言之,您需要手动处理 windows 消息(在 .NET 中不直接处理 - 代码来自链接文章):

    protected override void WndProc(ref Message m)
    {
        base.WndProc(ref m);
        if (m.HWnd != this.Handle)
        {
            return;
        }
        switch (m.Msg)
        {
            case Win32Messages.WM_MOUSEHWHEEL:
                FireMouseHWheel(m.WParam, m.LParam);
                m.Result = (IntPtr)1;
                break;
            default:
                break; 
        }
    }
    ...
    abstract class Win32Messages
    {
        public const int WM_MOUSEHWHEEL = 0x020E;//discovered via Spy++
    }

【讨论】:

  • 当您的窗口有水平滚动条时,这可以正常工作,但在其他情况下则不行。只是给那些可能想要滥用倾斜按钮而不是水平滚动的人(比如我 8-)的注释。
  • 倾斜鼠标滚轮时我的应用程序没有收到任何消息,但其他应用程序有。有什么建议吗?
  • 我已将其作为新问题发布在这里 - stackoverflow.com/questions/1092500/…
【解决方案2】:

基于此article,如果您有 IntelliPoint 驱动程序,您将收到WM_MOUSEHWHEEL 消息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-13
    • 2011-05-08
    • 2018-09-28
    • 1970-01-01
    • 1970-01-01
    • 2021-07-08
    • 2020-06-28
    • 1970-01-01
    相关资源
    最近更新 更多