我有以下代码:
for (int i = 0; i < 1;) {
if (GetKeyState(VK_SHIFT) & 0x8000)
{
cout << "op";
}
}
如果按住 Shift 键,则会打印出op
,实际上,如果按住键,它会向输出垃圾邮件。
这是我想要的:
当您按下/按住某个键而不是发送垃圾邮件时,程序会一次打印出一些内容,而再次打印该键的唯一方法是放开该键并再次按下。无论您按住该键多长时间,该程序只会一次执行以下代码,除非再次按下该键。
如何使我的代码做到这一点?
答案 0 :(得分:3)
您可以在检测到“按键按下”事件时将bool
设置为true
,然后在检测到“按键按下”后将其重新设置为false
事件。这样,您可以知道按键是否已经按下,并且仅在按键尚未处于该状态时才报告该按键被按下。
答案 1 :(得分:0)
您使用过Windows API吗?如果没有,请尝试GetKeyState(key) < 0
如果Windows消息与窗口回调函数一起使用,则可以使用bools数组并检查WM_KEYDOWN WM_KEYUP
事件。