Как очистить входной буфер перед использованием getch ()?

Итак, я использую 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 и который мог бы решить проблему.
Надеюсь на некоторые советы и спасибо.

1

Решение

использование FlushConsoleInputBuffer

FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE));
3

Другие решения

Это пропуск 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;
}
0

По вопросам рекламы [email protected]