【问题标题】:Win32 : How to trap left and right mouse button clicked at the same timeWin32:如何捕获同时单击鼠标左键和右键
【发布时间】:2015-06-25 05:50:32
【问题描述】:

当用户(单击和)同时释放左右鼠标时,我正在尝试编程特定行为。是否有已知的方法来捕获此类事件/手势。我知道如何捕获 leftButtonUp 和 rightButtonUp 但不确定如何捕获此事件。

如果按下左按钮,然后按下右按钮并有一个增量延迟,那没关系。当用户释放右键/左键时,如果随后在定义的 epsilon 时间内释放其他按钮,则应引发此类事件。

【问题讨论】:

  • 不需要任何代码,因为实际上没有用户能够同时点击这两个按钮。 ;)
  • 我能给出的唯一建议是获取双击速度的系统指标,然后在该时间片内跟踪左右按钮按下事件,没有向上事件任意一个。这在很大程度上取决于消息传递的吞吐量,因此如果时间绝对至关重要,您可以选择更接近金属(即驱动程序)的方法,但这可能足以满足您的需求。

标签: c++ click mouse win32gui


【解决方案1】:

WinAPI 中没有此类事件,但您可以自己跟踪。 wParam 所有按钮按下/向上消息中包含事件发生时所有按钮的状态信息:

MK_LBUTTON 0x0001 The left mouse button is down.
MK_MBUTTON 0x0010 The middle mouse button is down.
MK_RBUTTON 0x0002 The right mouse button is down.

因此,您需要跟踪更改并定义一个阈值,以过滤掉您认为是“同时点击/释放”的所有事件

【讨论】:

    【解决方案2】:

    您需要编写自己的处理方法。记录单击第一个按钮的时间,单击另一个按钮的时间,查看第一个按钮是否仍处于关闭状态以及延迟是否小于您提供的任何增量。

    【讨论】:

      【解决方案3】:
      If GetAsyncKey(0x01) && GetAsyncKey(0x02){
      DoEvent();
      }
      

      【讨论】:

      • 提供的代码可能会有所帮助,但为了使其成为一个好的答案,您还应该描述/解释您的代码为什么/如何准确地解决问题。
      猜你喜欢
      • 1970-01-01
      • 2017-11-04
      • 1970-01-01
      • 2010-10-18
      • 2020-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-14
      相关资源
      最近更新 更多