【发布时间】:2020-07-26 19:45:18
【问题描述】:
if (GetKeyState(VK_DOWN) & 0x80)
{
func();
}
当我按键时它会调用 func() 4 次 我希望它在我按键时只调用一次
编辑:
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;
我是这样做的,它会起作用吗?
【问题讨论】:
-
在第一次调用时提出一个标志
handled = true并在VK_UP时删除它 -
给我伪代码
-
你先从tour开始读How to Ask怎么样。这实际上是一个有价值的提示,说明出了什么问题,你的行为是不可接受的。
-
发布的代码最多调用一次
func();。如果问题是关于未显示的其他代码,您需要发布该完整代码。 -
@mynameisjef 同样,发布的代码有 one 行调用
func();,它位于if块内。该行最多可以执行一次。无论该代码是封闭循环的一部分,还是从多次调用的消息处理程序中调用,没有人能猜到,因为您没有显示任何其他代码。见How to create a Minimal, Reproducible Example。