我有程序,然后它正在运行它询问东西,然后用户必须按 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 并循环结束,这使您无法多次检查密钥。