gpt4 book ai didi

c++ - 如何刷新或清除 GetAsyncKeyState 的缓冲区

转载 作者:行者123 更新时间:2023-11-30 02:32:03 29 4
gpt4 key购买 nike

我在 MFC 应用程序中使用 GetAsyncKeyState 来检查是否按下了 Esc 按钮,但是当我在对话框中按下 Esc 按钮并在不同的对话框中使用 GetAsyncKeyState 时,它返回非零值,因为它存在于消息队列中。

如何清除或刷新 GetAsyncKeyState 的缓冲区或从消息队列中删除此消息?提前致谢。

最佳答案

您问题的直接答案是第二次调用它,丢弃第一次的值。

但我想您真正想知道的是如何读取 key 的当前状态,而不管您上次检查是什么时候。既然你写了“返回非零”,我相信你没有正确使用它。

您需要检查值为 0x8000 的位,因为该位指示是否现在被按下。值为 1 的位是自上次检查后按键被按下时设置的位,这就是让你绊倒的位,所以忽略它并直接测试值为 0x8000 的位。

示例代码:

if(GetKeyState(VK_RETURN) & 0x8000) yayReturnIsPressed();

检查 if(GetKeyState(VK_RETURN))if(GetKeyState(VK_RETURN) != 0 不会做你想做的,因为如果有任何一个设置返回值中的位。

关于c++ - 如何刷新或清除 GetAsyncKeyState 的缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36870063/

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