为什么WheelDelta = 120?

Kro*_*ica 11 winapi mousewheel

我正在处理鼠标事件OnMouseWheel.许多码样本参考距离的视图的改变(或者在3D应用变焦FI)作为Distance = Sign(WheelDelta)*ConstantDistance = WheelDelta / WHEEL_DELTA或该种东西-假定WheelDelta始终是120的倍数(WHEEL_DELTA常数= 120).

我已经发现在触摸界面/平板电脑输入可能取决于滚动长度.

我想知道为什么微软将默认的WheelDelta设置为120,为什么不是100或10或其他什么?在其他情况下,轮三角可能与120不同?

mat*_*ath 8

Qt文档详细阐述了为什么它实际上是120:

QPoint QWheelEvent :: angleDelta()const

返回轮子旋转的距离,以度数的八分之一为单位.正值表示车轮向前旋转远离用户; 负值表示车轮向后旋转朝向用户.

大多数鼠标类型以15度为单位工作,在这种情况下,delta值是120的倍数; 即,120个单位*1/8 = 15度.

然而,一些鼠标具有更精细分辨率的轮子并且发送小于120单位(小于15度)的delta值.为了支持这种可能性,您可以累积添加事件的增量值,直到达到值120,然后滚动窗口小部件,或者您可以部分滚动窗口小部件以响应每个轮事件.

https://doc.qt.io/qt-5/qwheelevent.html#angleDelta

  • +1,但这仍然不能回答为什么它被选择为 1/8 而不是 1/10 或 1/2。 (2认同)
  • 我猜想,你需要 3 位来表示 8 个值。`0..7`。这可以解释为什么不使用 1/10。我猜想没有使用“1/2”,因为它的粒度不够细。不过,我只是猜测,我真的不知道。 (2认同)

Hol*_*mar 7

WHEEL_DELTA不再固定为120.据我所知,这个常数被选中以允许将来更精细的分辨率,这显然是现在.

请参阅MSDN中的这篇文章