Функция GetAsyncKeyState определяет, является ли клавиша отпущенной или нажатой во время вызова функции и была ли клавиша нажата после предыдущего вызова GetAsyncKeyState.
Синтаксис
SHORT GetAsyncKeyState( int vKey ); |
Параметры
Windows NT/2000/XP: Вы можете использовать лево- и правосторонние константы, чтобы определить некоторые клавиши. См. раздел Замечаний в дальнейшей информации.
Возвращаемые значения
Если функция завершается успешно, возвращаемое значение устанавливает, была ли клавиша нажата начиная с последнего вызова функции GetAsyncKeyState, и является ли клавиша в настоящий момент отпущенной или нажатой. Если старший значащий бит установлен, клавиша находится в нажатом состоянии, а если самый младший значащий бит установлен, клавиша была нажата после предыдущего вызова GetAsyncKeyState. Однако, вам не следует полагаются на это последний характер изменения; для получения дополнительной информации, см. раздел Замечания.
Windows NT/2000/XP: Возвращаемое значение равно нулю для ниже перечисленных случаев:Windows 95/98/Me: Возвращаемое значение - общий асинхронный режим для каждой виртуальной клавиши. Система не проверяет, какой поток имеет фокус клавиатуры.
Windows 95/98/Me: Windows 95 не поддерживают лево- и правосторонние константы. Если Вы вызываете функцию GetAsyncKeyState с этими константами, возвращаемое значение равно нулю.
Замечания
Функция GetAsyncKeyState работает с кнопками мыши. Однако, она проверяет состояние физических кнопок мыши, а не логических кнопок мыши, в которые преобразуются физические кнопки. Например, вызов GetAsyncKeyState (VK_LBUTTON) всегда возвращает состояние левосторонней физической кнопки мыши, независимо от того, преобразована она в левостороннюю или правостороннюю логическую кнопку мыши. Вы можете определить текущее преобразование системы физических кнопок мыши в логические кнопки мыши при помощи вызова
GetSystemMetrics(SM_SWAPBUTTON) |
который возвращает значение ИСТИНА (TRUE), если кнопки мыши менялись местами.
Хотя самый младший значащий бит возвращаемого значения и указывает, была ли клавиша нажата начиная с последнего запроса, но благодаря природе приоритетной многозадачности Windows, другое приложение может вызвать функцию GetAsyncKeyState и принять "недавно нажатый" бит вместо вашей программы. Характер изменения самого младшего значащего бита возвращаемого значения сохраняется строго для совместимости с 16-битовыми приложениями Windows (которые являются неприоритетными) и на него нельзя опираться.
Вы можете использовать константы кода виртуальной клавиши VK_SHIFT, VK_CONTROL и VK_MENU как значения для параметра vKey. Они дают состояние клавиш SHIFT, CTRL или ALT, не разделяя их на левые и правые.
Windows NT/2000/XP: Вы можете использовать ниже следующее константы кода виртуальной клавиши как значения для vKey, чтобы различить между левыми и правыми экземплярами этих клавиш.
Код Значение VK_LSHIFT VK_RSHIFT VK_LCONTROL VK_RCONTROL VK_LMENU VK_RMENU
Эти лево- и правосторонние константы является доступными только тогда, когда Вы вызываете функции GetKeyboardState, SetKeyboardState, GetAsyncKeyState, GetKeyState и MapVirtualKey.
Смотри также
Обзор Ввод данных с клавиатуры, GetKeyboardState, GetKeyState, GetSystemMetrics, MapVirtualKey, SetKeyboardState
Размещение и совместимость GetAsyncKeyState |
|
Windows. NET Server |
Да |
Windows XP |
Да |
Windows 2000 |
Да |
Windows NT |
Да версии 3.1 и выше |
Windows Me |
Да |
Windows 98 |
Да |
Windows 95 |
Да |
Используемая библиотека |
User32.lib |
Заголовочный файл |
|
- объявлено в |
Winuser.h |
- включено в |
Windows.h |
Unicode |
Нет |
Замечания по платформе |
Не имеется |