From: http://www.gamedev.net/community/forums/topic.asp?topic_id=43463
Во-первых, GetKeyboardState () будет неправильной функцией, потому что, поскольку Windows имеет возможность обрабатывать сообщения клавиатуры (хотите вы того или нет), она обновляет результаты.состояния клавиатуры для следующего вызова GetKeyboardState ().
Вот небольшая функция, которую я использую, чтобы получить состояние клавиш клавиатуры.Однако будьте осторожны, в зависимости от того, насколько быстро работает ваш основной цикл, это может вызвать проблемы, если вы не ожидаете этого.функция ReadKeyboard ().Если ваш цикл опрашивает клавиатуру 30 раз в секунду, то однократное нажатие клавиши, вероятно, приведет к тому, что клавиша будет помечена 3 или 4 вызовами подряд.Скорее иногда сбивает с толку.Просто подумал, что упомяну это.
void ReadKeyboard( char* keys )
{
for (int x = 0; x < 256; x++)
keys[x] = (char) (GetAsyncKeyState(x) >> 8);
}