设置键盘状态无法正常工作



我有程序,然后它正在运行它询问东西,然后用户必须按 1 才能继续我使用 GetKeyState() 函数来决定是否按下了数字和 SetKeyboardState() 将键状态设置回原始状态,但它在第二次尝试后不起作用。怎么了?

法典:

BYTE States[256];
GetKeyboardState(States); 
cout << press 1 << endl;
while(!Started)
{
    if(GetKeyState(VK_NUMPAD1))
    {
        Started = true;
    }
}
SetKeyboardState(States);
cout << "press 1" << endl;
while(!Name)
{
    if(GetKeyState(VK_NUMPAD1))
    {
        Name = true;
    }
}
SetKeyboardState(States);
cout << "press 1" << endl;
while(!Located)
{
    if(GetKeyState(VK_NUMPAD1))
    {
        Located = true;
    }
}

代码对我来说看起来有点奇怪。我有一种感觉,你还没有找到解决问题的最佳方法。但我对你的问题了解不够,无法肯定地说。

不过,有一件事很突出。你对GetKeyState()返回值的测试是错误的,你应该像这样测试它:

if(GetKeyState(VK_NUMPAD1)<0)

从文档中:

如果高阶位为 1,则键关闭;否则,密钥为启动。

测试高阶位为 1 的简单方法是该值为负数。您的代码测试正在设置的任何位,这些位将评估为真,而不是键关闭。

我不是专家,但据我所知,你的时间(!名称)检查变量是否为假。在循环中,您将它们设置为 true 并循环结束,这使您无法多次检查密钥。

最新更新