C++ 如何在主线程繁忙时获取所有mousemove事件Windows MFC++;
我在mousemove事件上有一个很长的CPU操作。在这段时间里,似乎没有新的mousemove事件发送到我的应用程序,这使得鼠标位置发生了很大的变化 我以为mouseevents会排成一个队列,然后全部发送到我的应用程序,但事实似乎并非如此 我想从设备上获得尽可能高的mousemove事件分辨率-无论应用程序是否正在忙于处理某些事情C++ 如何在主线程繁忙时获取所有mousemove事件Windows MFC++;,c++,windows,mfc,mousemove,C++,Windows,Mfc,Mousemove,我在mousemove事件上有一个很长的CPU操作。在这段时间里,似乎没有新的mousemove事件发送到我的应用程序,这使得鼠标位置发生了很大的变化 我以为mouseevents会排成一个队列,然后全部发送到我的应用程序,但事实似乎并非如此 我想从设备上获得尽可能高的mousemove事件分辨率-无论应用程序是否正在忙于处理某些事情 我应该把我的应用程序放在一个工作线程中,让我的主线程只处理事件吗?是否有更简单的方法查看“原始”鼠标输入。您有几个选项: 正如您提到的,将处理放在工作线程中,让
我应该把我的应用程序放在一个工作线程中,让我的主线程只处理事件吗?是否有更简单的方法查看“原始”鼠标输入。您有几个选项:
- 正如您提到的,将处理放在工作线程中,让Windows消息在主线程中传输。这可能是最传统的方法,最合乎逻辑的设计
- 使用和可随时获取鼠标状态,而不依赖于Windows消息循环。换句话说,每N毫秒中断一次繁忙的任务,以轮询和记录鼠标状态。我不建议这样做,因为您将绕过系统的消息处理进行轮询
- 每当您希望允许消息通过时,都会启动消息循环。从Visual Basic中思考
。我只是不推荐这个;这是其中一件“感觉简单”但实际上增加了复杂性的事情,这会让你只想放弃你的代码并正确地重写它DoEvents