我有程序,然后运行它询问东西,然后用户必须按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/