如何检测鼠标滚轮倾斜?

时间:2009-07-05 08:39:30

标签: c# .net vb.net winforms

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

2 个答案:

答案 0 :(得分:11)

涵盖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++
    }

答案 1 :(得分:3)

根据此article,如果您拥有IntelliPoint驱动程序,则会收到WM_MOUSEHWHEEL条消息。