我目前正在为学校创建一个控制台游戏,而我在使用GetAsyncKeyState时遇到了麻烦,无法使用我的主菜单。我的主菜单运行在一个无限循环中,只有当一个按键被按下时才会断开。例如我有:GetAsyncKeyState用cin创建问题
if(GetAsyncKeyState('1'))
{
Play();
break;
}
这个,单独工作正常。问题是在我的Play()方法中,我有一个cin语句,并且Menu()中的'1'进入我的Play()。我尝试过cin.clear()无效,并且cin.ignore(...)阻止了从Menu()到Play()的即时更改。有什么办法可以防止这种情况发生?在调用之前
用户在'1'键上有她的胳膊肘。当你要求输入时,你希望显示什么?仔细想想,你不能两面都有。 –
请注意,您正在错误地检查'GetAsyncKeyState'的返回值。但是这里的问题是,在用户放开* 1键之前,你的程序正在超前。在退出菜单之前,您可能应该等到释放按键。 –
即使您的应用程序没有焦点,“GetAsyncKeyState”也会读取键盘状态。您可能想要使用'GetNumberOfConsoleInputEvents'和'ReadConsoleInput'(或旧的conio.h接口)来只读取控制台输入。 – alexisdm