我有程序,然后它运行它询问东西然后用户必须按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;
}
}
答案 0 :(得分:1)
我不是专家,但就我所知, 你的while(!Name)检查变量是否为false。在循环内部,您将它们设置为true,循环结束,这使您无法再检查一次键。
答案 1 :(得分:1)
代码对我来说有点奇怪。我觉得你没有找到解决问题的最佳方案。但是我不确定你的问题是肯定的。
但有一件事情很突出。您对GetKeyState()
的返回值的测试是错误的,您应该像这样测试它:
if(GetKeyState(VK_NUMPAD1)<0)
来自文档:
如果高位为1,则键为关闭;否则,它就结束了。
测试高阶位为1的简单方法是该值为负。您的代码将测试所设置的任何位,该值将针对除关键字以外的其他状态评估为真。