微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在主线程繁忙时获取所有mousemove事件Windows MFC C ++

如何解决如何在主线程繁忙时获取所有mousemove事件Windows MFC C ++

我在mousemove事件上有很长的cpu操作。在此期间,似乎没有新的mousemove事件发送到我的应用程序,这使鼠标位置发生了很大的跳跃。

我认为mouseevents将在队列中累积,然后全部发送到我的应用程序,但这似乎并非如此。

我希望设备尽可能提供高分辨率的mousemove事件-无论应用是否忙于处理某些事情。

我应该将应用程序放在工作线程中,而让我的主线程只处理事件吗?有没有更简单的方法来查看“原始”鼠标输入。

解决方法

您有几种选择:

  • 如前所述,将处理放入工作线程中,并让Windows消息进入主线程。这可能是最常规的方法,也是最合逻辑的设计。
  • 使用GetCursorPosGetAsyncKeyState随时获取鼠标状态,而无需依赖Windows消息循环。换句话说,每N毫秒中断一次繁忙的任务以轮询并记录鼠标状态。我不建议这样做,因为您将进行轮询,绕过系统的消息处理。
  • 每当您要允许消息通过时,都将弹出消息循环。从Visual Basic中考虑DoEvents。我只是不建议这样做;这是“感觉很简单”的事情之一,但实际上却增加了复杂性,使您只想放弃代码并正确地重写它。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。