【问题标题】:Double click, how handle it?双击,怎么处理?
【发布时间】:2013-08-24 01:30:44
【问题描述】:

我试图找出如何用鼠标左键(或任何)处理双击。 但我找不到任何关于它的信息。

有人可以帮我吗?我不想编写自己的双击处理程序。

GLFW_REPEAT 不适用于鼠标按钮。

【问题讨论】:

  • 为什么?我的代码没有问题,我想知道是否有任何方法可以使用 GLFW3 处理双击,而无需编写我自己的代码来处理双击,因为键盘事件有 3 个动作状态,但对于鼠标只有 2 个,GLFW_PRESS和 GLFW_RELASE,而 GLFW_REPEAT 仅适用于键盘 -.-
  • 我记得在某处看到它在未来 GLFW 功能的路线图中,让我看看能不能找到那个来源。
  • @pwny 就在这里:wiki.glfw.org/wiki/Suggestions_and_ideas#Double-click_support 奇怪的是 OP 说他找不到任何关于它的信息,而这对我来说是谷歌的第一个结果。
  • @remyabel 以大约 15 秒的优势击败了我 :)
  • 哪个平台?什么窗口框架?

标签: c++ glfw


【解决方案1】:

编写自己的双击处理程序有什么问题?

只需保存鼠标点击发生的时间,例如与std::chrono::high_resolution_clock::now(),当下次鼠标点击发生时,比较时间。如果低于特定值,则发生双击。

【讨论】:

  • 这样做的问题是您不再尊重双击的系统设置。如果用户因为残疾而将其双击速度设置为“非常慢”,那么您只是将他们排除在使用您的应用程序之外。像这样的东西在系统 API 中是有原因的 - 有很多小方法可以弄乱你自己的双击处理程序,甚至忽略系统设置。如果用户双击但按住第二个,然后将鼠标拖出命中框怎么办?你想为此实现处理程序吗?
  • GLFW 没有明确的支持,因此除非 OP 想要切换库,否则必须使用原始实现。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多