Использование SetKeyboardState вместе с GetKeyboardState в C ++ - PullRequest
0 голосов
/ 23 февраля 2010

Я не знаю, как написать хороший вопрос здесь, но, в принципе, кто-нибудь знает, где я могу найти некоторый исходный код C ++, используя их для фактической установки состояния клавиатуры? По какой-то причине использовать его так, как это делает MSDN в Windows 7, ничего не делает ... вообще ничего.

Основной код:

PBYTE keyState;

GetKeyboardState(keyState);

...

// Later on when I need to set the keyboard state (key pressed etc) back to original:
SetKeyboardState(keyState);

и ... ничего не происходит: (

1 Ответ

0 голосов
/ 23 февраля 2010

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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...