В чем разница между нажатием клавиши:
GetKeyState()
GetAsyncKeyState()
getch()
?Когда я должен использовать один поверх другого?
GetKeyState () и GetAsyncKeyState () являются API-интерфейсами, специфичными для Windows, в то время как getch () работает с другими компиляторами Си, не относящимися к Windows.
GetKeyState () возвращает статус ключа из очереди сообщений потока. Состояние не отражает состояние уровня прерывания, связанное с оборудованием.
GetAsyncKeyState () указывает, была ли нажата клавиша с момента последнего вызова GetAsyncKeyState (), и является ли ключ в настоящее время вверх или вниз. Если установлен старший значащий бит, клавиша нажата, а если установлен младший значащий бит, клавиша была нажата после предыдущего вызова GetAsyncKeyState ().
На практике я видел, что если вы удерживаете нажатой клавишу и назначаете поведение при нажатии клавиши, если вы используете GetKeyState (), поведение будет вызываться больше раз, чем если бы вы использовали GetAsyncKeyState ().
В играх я предпочитаю использовать GetAsyncKeyState ().
(Вы также можете проверить более подробную информацию в блоге MSDN).
Других решений пока нет …