C ++中的Keypress事件

我目前正在使用
GetAsyncKeyState()
来检测Keydown事件,但是当你按住键时会重复这些事件。 什么是阻止事件重复的简单方法? 例 如果我按住键盘上的键
i
一段时间,我会得到这样的输出:
iiiiiiiiiiiiiiiiiiiiiiiii
而不是这个:
i
我想强制用户再次按下该键以触发事件。     
已邀请:
避免使用键盘相关消息(如WM_KEYDOWN或WM_CHAR)来检测密钥,Windows会在用户按下时重复WM_KEYDOWN。您只需要一个自己的bool标志来跟踪密钥的状态。当您看到GetAsyncKeyState()报告的状态与此标志之间存在差异时,仅更改游戏对象状态。大致:
bool movingLeft = false;
...
if ((GetAsyncKeyState(VK_LEFT) < 0) != movingLeft) {
    movingLeft = !movingLeft;
    gameObject->setVelocity(movingLeft ? -10 : 0);
}
    
使用KeyPress事件(或KeyUp)。 顺便说一下,根据MSDN SHORT WINAPI GetAsyncKeyState(__ in int vKey);   确定键是向上还是向下   在调用函数时,   以及之后是否按下了按键   之前调用GetAsyncKeyState。 它没有说明检测keydown事件。     

要回复问题请先登录注册