我试图无辜地打电话
PeekMessage(&msg, 0, WM_KEYDOWN, WM_KEYUP, PM_NOREMOVE | PM_NOYIELD);
在 PeekMessage 调用中,Windows Vista 64 正在处理消息。结果是我要重入我的绘画调用和各种其他代码。
在我们的应用程序中绘制可能需要几秒钟,所以我们添加了 PeekMessage 调用来查看用户是否按下了某个键,这样我们就可以中断该绘制并启动下一个绘制。我们几乎没有意识到 Windows 可以开始处理我们身上的消息。将真正的绘画工作放在一个单独的线程中将是一个重大的重构......我们试图查看是否按下了特定的键,或者是否旋转了鼠标滚轮或单击了鼠标按钮,以中断渲染。
我已经尝试专门添加代码以防止重新进入,然后将绘制消息重新注入队列等。这一切都非常笨拙,并且在某些情况下它不能很好地工作。
我可以在 PeekMessage 调用中添加一些标志吗?我在 MSDN 上的文档中没有看到任何新内容。我真的需要一个PeekMessage
不处理消息的。帮助!