【发布时间】:2018-07-07 16:58:01
【问题描述】:
我有以下代码:
for (int i = 0; i < 1;) {
if (GetKeyState(VK_SHIFT) & 0x8000)
{
cout << "op";
}
}
如果按住 Shift 键,则会打印出op,实际上,如果您按住该键,则会输出垃圾邮件。
这正是我想要的:
当您按下/按住某个键而不是发送垃圾邮件时,程序会打印一次,而再次打印它的唯一方法是放开该键并再次按下它。不管你按住这个键多久,程序只会执行一次下面的代码,除非你再次按下它。
如何让我的代码做到这一点?
【问题讨论】:
-
添加一个标志并在第一次按下键时设置它,并在释放键时取消设置。在每次按键时检查此标志以确定键是刚刚按下还是按住。
-
或使用
GetAsyncKeyState()代替:“确定在调用函数时某个键是向上还是向下,以及在上一次调用 GetAsyncKeyState 之后是否按下了该键.”