0

heu 所以我正在使用上述 Windows 功能,幸运的是,这些功能适用于 Windows 2000 及更高版本,但在控制台上制作游戏时我遇到了一个问题:只要按下一个键,控制台就会通过 kbhit( ) 功能,无论是否再次按下某个键...

有什么方法可以清除键盘按键缓冲区,这样您就无法在没有新按键的情况下通过 kbhit?

如果需要新的库下载,我想我可以......但我希望有一种 Windows 标准方式!

谢谢!!

4

2 回答 2

2

谁告诉你这kbhit()是一个 Windows 功能,你是在误导你。 kbhit()getch()它们的亲戚实际上是(C 语言绑定到)MS-DOS API 的一部分。 它们出现在 OS/2、Win32 和其他 C/C++ 编译器的运行时库中只是为了作为 MS/PC/DR-DOS 程序的移植辅助工具。该库将它们映射到现有的任何用于访问键盘的本机机制(如果有的话),并且通常仅以正确的方式使 TUI(而不是 GUI)应用程序访问键盘。

如果您正在编写一个新的 TUI 应用程序,请不要使用 MS-DOS API。为您的目标平台使用适当的本机 API,例如Win32 控制台 APIOS/2 控制台 API,或POSIX 通用终端接口(通过 ncurses 等)。

当您这样做时,您将阅读他们的文档并了解如何在进行非破坏性“窥视”之后对键盘输入执行破坏性“获取”。或者如果这是您想要做的,实际上如何完全刷新缓冲区。

于 2011-05-17T13:09:49.893 回答
1

显而易见的选择是FlushConsoleInputBuffer

于 2011-05-02T21:55:33.630 回答