我有程序,然后运行它询问东西,然后用户必须按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,则按键按下;否则为0。否则,它会上升。


测试高阶位为1的简单方法是该值为负。您的代码将测试是否设置了任何位,该位对于除按下键之外的其他状态都将为true。

关于c++ - SetKeyboardState无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21684397/

10-11 16:05