gpt4 book ai didi

c++ - 如何使用 PeekMessage 检索除输入(鼠标+键盘)之外的所有消息

转载 作者:可可西里 更新时间:2023-11-01 18:39:44 32 4
gpt4 key购买 nike

我的代码中某处有一个循环函数,它调用 PeekMessage 以检索事件。

目前看起来是这样的:

while (PeekMessage(&Message, NULL, 0, 0, PM_REMOVE))
{
// Process events
}

现在我想在不同的位置管理输入,这意味着我想在不同的地方,在我的主循环的不同时间。

PeekMessage 的第三个和第四个参数允许定义要返回的消息范围,因此我可以使用它,使用提供的宏 WM_KEYFIRSTWM_KEYLASTWM_MOUSEFIRSTWM_MOUSELAST。但这很不方便,因为我有两个范围来检查输入,因此剩下的所有内容都有三个范围。

最后一个参数是一个标志,我可以通过 PM_REMOVE | PM_QS_INPUT 用于输入。但是,我应该在另一个循环中传递什么,我想在那里获取所有其他消息?没有 PM_QS_EVERYTHING_EXCEPT_INPUT 宏...

执行此操作最优雅的方法是什么?

最佳答案

您可以尝试使用“过滤器”。 Win32 称之为“ Hook ”,请查看 msdn 的 SetWindowsHookEx 函数。您可以为键盘和鼠标消息安装线程特定的过滤器。然后你可以将消息推送到你的维护队列并稍后手动访问它(知道你可以从该线程的公共(public)队列中删除相关消息,如果你选择的话,从 Hook 中,这样只有你的用户队列才会有消息)。不过,在您感兴趣的每种情况下,您也可以直接从 PeekMessage 开关直接推送到此使用队列。

关于c++ - 如何使用 PeekMessage 检索除输入(鼠标+键盘)之外的所有消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10568779/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com