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