【发布时间】:2017-01-31 11:04:44
【问题描述】:
我正在尝试创建一个代码来检测鼠标按钮是否被按下。到目前为止,我有一个代码可以检测按钮是否被按下一次。但它并没有让我检查按钮是否被连续按下。例如按下鼠标左键,这将启动一个计时器,0.5 秒后它会再次检查,如果它仍然向下输出一些东西。
我想这样设置
while (true)
{
if (GetAsyncKeyState(VK_LBUTTON) & (0x8000 != 0))
{
cout << ("left button pressed") << endl;
Sleep(500);
if (GetAsyncKeyState(VK_LBUTTON) & (0x8000 != 0))
{
cout << ("Left button held down") << endl;
}
}
}
但是,它不起作用,如果我快速连续双击它只会输出第二条语句。
确定在调用函数时某个键是向上还是向下,以及在上一次调用 GetAsyncKeyState 之后是否按下了该键。
msdn 网站是这么说的。这是否意味着我应该在得到我想要的结果之后检查它是否是 UP。
【问题讨论】:
-
0x8000 始终不等于 0,正确放置括号。最简单的测试方法是使用
if (GetAsyncKeyState(VK_LBUTTON) < 0)。现在您知道为什么 GetAsyncKeyState() 具有非常不寻常的 SHORT 返回类型。