所以,我正在使用GetAsyncKeyState()来查看何时按下某个键。但是,使用它之后我需要使用getch()。但似乎getch()得到了之前获得的GetAsyncKeyState()。这是我简化代码的版本:
#include <graphics.h>
int main()
{
initwindow(100, 100);
while(true)
{
if (GetAsyncKeyState(VK_RETURN)) //wait for user to press "Enter"
break;
//do other stuff
}
getch(); //this is just skipped
return 0;
}
我认为在使用getch()之前我需要清理输入缓冲区。但是怎么样? PS:GetAsyncKeyState()是我必须使用的,我没有找到任何替代getch(),它可以使用BGI窗口,这将解决问题。 希望得到一些建议,谢谢。
答案 0 :(得分:3)
FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE));
答案 1 :(得分:0)
正在跳过getch()
来自用户按前一次输入的enter
调用,而getch
正在获取char
,函数fflush(stdin)
我们刷新输入流。
这样getch()
将从输入流中读取新输入。
#include <graphics.h>
int main()
{
initwindow(100, 100);
while(true)
{
if (GetAsyncKeyState(VK_RETURN)) //wait for user to press "Enter"
break;
//do other stuff
}
fflush(stdin);
getch(); //this is just skipped
return 0;
}