我在代码中有一个循环函数,调用
目前它看起来像这样:
现在我想在不同的位置管理输入,也就是说,我想在主循环的不同时间获取消息,例如
最后一个参数是一个标志,我可以传递
最优雅的方法是什么?
PeekMessage
以检索事件。目前它看起来像这样:
while (PeekMessage(&Message, NULL, 0, 0, PM_REMOVE))
{
// Process events
}
现在我想在不同的位置管理输入,也就是说,我想在主循环的不同时间获取消息,例如
WM_KEYDOWN
, WM_MOUSEMOVE
(鼠标和键盘事件)。
PeekMessage
的第三个和第四个参数允许定义要返回的消息范围,因此我可以使用提供的宏 WM_KEYFIRST
、WM_KEYLAST
、WM_MOUSEFIRST
和 WM_MOUSELAST
。但这非常不方便,因为我需要检查两个输入范围,因此对于其余所有内容,我需要检查三个范围。最后一个参数是一个标志,我可以传递
PM_REMOVE | PM_QS_INPUT
来处理输入。但那么,在另一个循环中,当我想要获取其他所有消息时,我应该传递什么呢?没有 PM_QS_EVERYTHING_EXCEPT_INPUT
宏……最优雅的方法是什么?
~PM_QS_INPUT
,它可以通过按位或与PM_REMOVE
组合。 - chris~PM_QS_INPUT
,但只掩盖适用于该类型标志的位范围。我在那里脑子短路了。所以如果后半部分是为此目的,前半部分将为0,并且除了最后半部分的PM_QS_INPUT
之外,其他所有内容都将为1。 - chriswhile(PeekMessage(...WM_KEYFIRST...) || PeekMessage(...WM_MOUSEFIRST...))
)与增强型、多范围 PeekMessage 所做的是相同的。 - ixe013