我正试图无辜地打电话

PeekMessage(&msg, 0, WM_KEYDOWN, WM_KEYUP, PM_NOREMOVE | PM_NOYIELD);

在PeekMessage调用中,Windows Vista 64是处理消息。结果是我要重新进入绘画调用以及各种其他代码。

绘画在我们的应用程序中可能需要几秒钟,因此我们添加了PeekMessage调用以查看用户是否按下了按键,因此我们可以中断该绘画并启动下一个绘画。我们几乎没有意识到Windows可以开始在我们身上处理消息。将绘画的实际工作放在一个单独的线程中将是主要的重构……我们试图查看是否按下了特定的键,或者是否旋转了鼠标滚轮或单击了鼠标按钮来中断渲染。

我尝试添加专门用于防止重新进入的代码,然后将绘画消息重新注入(inject)到队列中,等等。这都是非常繁琐的事情,在某些情况下它不能很好地工作。

我可以在PeekMessage调用中添加一些标志吗?我没有在MSDN的文档中看到任何新内容。我真的需要一个不处理消息的PeekMessage。帮助!

最佳答案

也许我缺少明显的东西,但是spec is pretty verbose会这样做:



...

关于windows - 是否有类似PeekMessage的功能不处理消息?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1133507/

10-15 15:06