if (GetKeyState(VK_DOWN) & 0x80)
{
func();
}
当我按键时,它会像4次一样调用func() 我希望它在按键时只打一次电话
编辑:
SHORT keyState;
SHORT keyState2;
SHORT keyState3;
static bool toogle1 = false;
static bool toogle2 = false;
static bool toogle3 = false;
if (keyState = GetAsyncKeyState(VK_DOWN) && !toogle1)
{
toogle1 = true;
}
else
toogle1 = !toogle1;
if (keyState2 = GetAsyncKeyState(VK_NUMPAD0) && !toogle2)
{
toogle2 = true;
}
else
toogle2 = !toogle2;
if (keyState3 = GetAsyncKeyState(VK_NUMPAD1) && !toogle3)
{
toogle3 = true;
}
else
toogle3 = !toogle3;
这是我的操作方式,它将起作用吗?
答案 0 :(得分:0)
static bool once = false;
if (GetKeyState(VK_DOWN) & 0x80)
{
if (!once)
{ once = true; func(); }
}
答案 1 :(得分:0)
我猜你是循环运行的。在调用时切换标志的想法很不错,但是由于在其他情况下将其切换回原来的位置,因此您调用func()
的频率是以前(每2次)的一半。
当您想再次调用它时(根据您的代码,我想您想要),当再次按下该键而不是向函数调用发送垃圾邮件时,您可以使用变量来存储最后一次按下的键,并且仅调用{{ 1}},当它是另一个键时(您也可以添加“未按下任何键”状态。
如果您真的只想调用一次,只需删除else语句即可。