C ++检查是否按下了键,没有按下

时间:2018-07-07 16:58:01

标签: c++ windows key

我有以下代码:

for (int i = 0; i < 1;) {
        if (GetKeyState(VK_SHIFT) & 0x8000)
        {
            cout << "op";
        }
}

如果按住 Shift 键,则会打印出op,实际上,如果按住键,它会向输出垃圾邮件。

这是我想要的:

当您按下/按住某个键而不是发送垃圾邮件时,程序会一次打印出一些内容,而再次打印该键的唯一方法是放开该键并再次按下。无论您按住该键多长时间,该程序只会一次执行以下代码,除非再次按下该键。

如何使我的代码做到这一点?

2 个答案:

答案 0 :(得分:3)

您可以在检测到“按键按下”事件时将bool设置为true,然后在检测到“按键按下”后将其重新设置为false事件。这样,您可以知道按键是否已经按下,并且仅在按键尚未处于该状态时才报告该按键被按下。

答案 1 :(得分:0)

您使用过Windows API吗?如果没有,请尝试GetKeyState(key) < 0

如果Windows消息与窗口回调函数一起使用,则可以使用bools数组并检查WM_KEYDOWN WM_KEYUP事件。