gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 06:58:41 26 4
gpt4 key购买 nike

我在 mousemove 事件上有一个长时间的 CPU 操作。似乎在那段时间没有新的 mousemove 事件发送到我的应用程序,导致鼠标位置大幅跳跃。

我以为鼠标事件会在队列中建立起来,然后全部发送到我的应用程序,但事实似乎并非如此。

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

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

最佳答案

您有几个选择:

  • 正如您提到的,将您的处理放在工作线程中,让 Windows 消息在您的主线程中传输。这可能是最常规的方法,最符合逻辑的设计。
  • 使用GetCursorPosGetAsyncKeyState随时获取鼠标状态,而不依赖于 Windows 消息循环。换句话说,每 N 毫秒中断您繁忙的任务以轮询并记录鼠标状态。我不推荐这样做,因为您将进行轮询,绕过系统的消息处理。
  • 只要你想让消息通过,就启动消息循环。想想 Visual Basic 中的 DoEvents。我只是不推荐这个;它是其中一种“感觉简单”但实际上增加了复杂性的东西,会让您只想放弃代码并正确地重写它。

关于c++ - 如何在主线程繁忙时获取所有 mousemove 事件 Windows MFC C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64646443/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com