Frage

Heu, also verwende ich die oben genannten Windows -Funktionen, die zum Glück für Windows 2000 und Up sind, aber wenn ich ein Spiel auf der Konsole mache, habe ich ein Problem gestoßen: Sobald eine Taste gedrückt wird, wird die Konsole über die KBHIT ( ) Funktion, egal ob eine Taste nicht wieder gedrückt wird ...

Gibt es eine Möglichkeit, den Tastaturpressepuffer zu löschen, damit Sie ohne einen neuen Tastendruck nicht überkamen werden können?

Wenn ein neuer LIB -Download benötigt wird, denke ich, könnte ich ... aber ich hoffe auf einen Windows Standard Way!

Vielen Dank!!

War es hilfreich?

Lösung

Wer auch immer dir das gesagt hat kbhit() War eine Windows -Funktion Sie falsch informiert. kbhit(), getch() und ihre Verwandten sind tatsächlich Teil der (C -Sprachbindungen an die) MS-DOS API. Ihre Präsenz in den Laufzeitbibliotheken für OS/2, Win32 und andere C/C ++ - Compiler ist einfach zu sein Eine Portierungshilfe für MS/PC/DR-DOS-Programme. Die Bibliothek ändert sie auf was auch immer einheimisch Der Mechanismus gibt es für den Zugriff auf die Tastatur, wenn überhaupt eine und normalerweise nur auf die richtige Weise für TUI, nicht die GUI und die Anwendungen für den Zugriff auf die Tastatur.

Wenn Sie eine neue TUI-Anwendung schreiben, verwenden Sie die MS-DOS-API nicht. Verwenden Sie die richtige, native API für die Plattform, auf die Sie abzielen, wie die Win32 Konsole -API oder der OS/2 -Konsolen -API, oder der POSIX General Terminal Interface (über Ncurses oder solche).

Wenn Sie dies tun, lesen Sie ihre Dokumentation und finden heraus, wie Sie nach einem nicht-zerstörerischen "Peek" ein zerstörerisches "Get" des Tastatureingangs ausführen können. Oder wie man den Puffer in seiner Gesamtheit spüle, wenn Sie das tun möchten.

Andere Tipps

Die offensichtliche Wahl wäre FlushConsoleInputBuffer

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top