gpt4 book ai didi

c++ - GetAsyncKeyState 使用 cin 创建问题

转载 作者:可可西里 更新时间:2023-11-01 14:15:09 25 4
gpt4 key购买 nike

我目前正在为学校创建一个主机游戏,但我在使用主菜单的 GetAsyncKeyState 时遇到了问题。我的主菜单在无限循环中运行,只有按下一个键才会中断。例如我有:

if(GetAsyncKeyState('1'))
{
Play();
break;
}

仅此一项就可以正常工作。问题是,在我的 Play() 方法中,我有一个 cin 语句,并且 Menu() 中的“1”进入了我的 Play()。我试过 cin.clear() 无济于事,而 cin.ignore(...) 阻止了从 Menu() 到 Play() 的瞬时变化。有什么办法可以防止这种情况发生吗?

最佳答案

在调用 Play() 之前尝试此操作

FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE));

此外,当您使用 GetAsyncKeyState 时,您应该屏蔽除高位以外的所有内容,如下所示:

if ((GetAsyncKeyState('1') & 0x8000) != 0)

请参阅“返回值”下的文档以了解原因:http://msdn.microsoft.com/en-us/library/windows/desktop/ms646293%28v=vs.85%29.aspx

关于c++ - GetAsyncKeyState 使用 cin 创建问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8468514/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com