Visual studio 在Visual Studio中使用鼠标滚轮进行水平滚动

Visual studio 在Visual Studio中使用鼠标滚轮进行水平滚动,visual-studio,visual-studio-2010,scroll,Visual Studio,Visual Studio 2010,Scroll,我有一个新的鼠标,它可以使用滚轮左右滚动。 虽然此功能适用于网页、Photoshop等,但当我在Visual Studio中查看比窗口长(水平)的代码时,它不会起任何作用 有没有办法让它发挥作用 Visual Studio是2010 Express;鼠标是Logitech MX1100。VS2010中的水平滚动存在一些问题,其中一些问题在VS2010发布后已得到修复或解决。我不确定MX1100是否是以下任何一个具体示例,但其中一些问题是: 一些mice驱动程序最终将事件发送到错误的HWND;我们

我有一个新的鼠标,它可以使用滚轮左右滚动。 虽然此功能适用于网页、Photoshop等,但当我在Visual Studio中查看比窗口长(水平)的代码时,它不会起任何作用

有没有办法让它发挥作用


Visual Studio是2010 Express;鼠标是Logitech MX1100。

VS2010中的水平滚动存在一些问题,其中一些问题在VS2010发布后已得到修复或解决。我不确定MX1100是否是以下任何一个具体示例,但其中一些问题是:

  • 一些mice驱动程序最终将事件发送到错误的HWND;我们见过这样的情况:事件总是发送到最后一个但有一个焦点的事件,例如,当编辑器有焦点时,解决方案资源管理器将滚动。我想这个已经修好了
  • 许多驱动程序在发送WM_鼠标滚轮(或伪造WM_HSCROLL)之前,检查主HWND是否有WS_HSCROLL(声明它有一个win32水平滚动条)。由于VS的主窗口没有,而且编辑器之类的东西没有win32水平滚动条,它们将拒绝发送水平滚动消息。这个是不固定的
  • (当然不是您的情况,但是)运行windows的VMWare Fusion(在OS X上)不会将水平滚动事件转发到客户端操作系统

  • 我将与其他人核实MX1100是否已知或是否属于前两类中的任何一类。

    使用AutoHotKey试用我的解决方案:

    ;Shift+滚轮用于水平滚动
    +WheelUp::
    ; 向左滚动
    鼠标操作系统,,,id,fcontrol,1
    环路8 编辑由于ShiftScroll似乎已被放弃,我创建了一个小型扩展,将此功能添加到Visual Studio 2017和Visual Studio 2019中

    它支持在文本编辑器和其他几个面板(如输出窗口)中滚动。希望它能帮助别人


    对于VS2015,ShiftScroll扩展可以完美地实现这一点

    按住shift键时,它以非常舒适的速度向左/向右滚动


    这将是VS IMHO的一个很好的内置功能。

    你能给我发电子邮件吗(微软的noahric)?我可以将您直接转发给正在研究hscroll鼠标问题的人员。@Noah Richards:我已经使用您的博客向您发送了一封电子邮件。谢谢你的详细回答。1和3在我的情况下肯定不是问题。我在记事本++中也看到了水平滚动的问题。在这种情况下,滚动条似乎在视觉上滚动,但代码本身却没有。此外,卷轴的设计也很适合VS2017。这太神奇了。我们不应该在SO中使用评论来表达感谢,但是。。。非常感谢。难以置信,这不是标准功能。谢谢!完美的解决方案。适用于VS Community 2019版本16.8.2这正是我想要的!!非常感谢你!!!
    ; Shift + Wheel for horizontal scrolling
    +WheelUp::
        ; Scroll to the left
        MouseGetPos,,,id, fcontrol,1
        Loop 8 ; <-- Increase for faster scrolling
            SendMessage, 0x114, 0, 0, %fcontrol%, ahk_id %id% ; 0x114 is WM_HSCROLL and the 0 after it is SB_LINERIGHT.
    return
    +WheelDown::
        ;Scroll to the right
        MouseGetPos,,,id, fcontrol,1
        Loop 8 ; <-- Increase for faster scrolling
            SendMessage, 0x114, 1, 0, %fcontrol%, ahk_id %id% ;  0x114 is WM_HSCROLL and the 1 after it is SB_LINELEFT.
    return