我正在编写一个用于绘画的 Win32 OpenGL 应用程序,其中处理所有鼠标移动至关重要。碰巧的是,有时我的程序中的绘画操作无法实时执行——这对我来说很好,只要所有鼠标事件都排队并且可以稍后处理。现在我会认为这只是调用PeekMessage
确保处理所有事件的问题,但是当我这样做时,很明显我的应用程序接收到的鼠标移动与 Windows 显示的鼠标移动的保真度不同.
这是Windows的功能吗?当应用程序是劳动密集型时,鼠标事件是否被丢弃?还是我错过了什么?在这两种情况下,我能做些什么来纠正这种情况?我想避免多线程,部分原因是,据我了解,Win32 要求消息回调位于主线程中,我不确定将 OpenGL 的东西分离到不同的上下文中。
至于代码示例,我基本上是在使用下面链接中的模板代码。我正在检查的消息是WM_MOUSEMOVE
.
http://nehe.gamedev.net/tutorial/creating_an_opengl_window_(win32)/13001/