gpt4 book ai didi

c++ - GetKeyState 和 GetAsyncKeyState 有什么区别?

转载 作者:可可西里 更新时间:2023-11-01 10:05:52 33 4
gpt4 key购买 nike

MSDN ,我了解到GetKeyState 与当前线程的消息队列相关联。

然后我创建了两个示例应用程序:KeyPresserBackChecker

我在 KeyPresser 中按下一个键,在这个应用程序中,我使用 GetKeyState/GetAsyncKeyState/GetKeyboardState 来检索按下的键状态,他们告诉我那个键是按下。

然后我将 KeyPresser 消息发送(或发布)到 BackChecker ,以通知 BackChecker 检查其线程中的键状态。

我从 BackChecker 得到相同的结果,表明按下了键。但我认为 GetKeyState/GetKeyboardState 应该返回 zero 因为键是在 KeyPresser 的线程中按下的,它与 的线程无关返回检查器

为什么?

最佳答案

Windows 上的键盘输入是缓冲的。它确保用户可以继续输入,即使程序暂时没有响应。在某种程度上,这样总是不会丢失击键。它们被添加到消息队列中,程序的消息循环稍后使用 GetMessage() 检索它们。

除了击键,它还存储所有其他键的状态。为确保在最终检索到消息时,您可以可靠地判断出其他哪些键已关闭。例如,对于修改键非常重要。否则,像 Ctrl+A 这样的快捷键将无法可靠地工作。

因此,您通常总是使用 GetKeyState(),您可以获得按键最初记录时的状态。或 GetKeyboardState(),您将获得整个辣酱 Jade 米饼馅。使用 GetAsyncKeyState() 不太常见,它不依赖于缓冲状态,只有在应用程序具有非常不寻常的消息处理时才需要。或许在游戏中是合适的。

关于c++ - GetKeyState 和 GetAsyncKeyState 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25891866/

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