Функция GetKeyNameTextA (winuser.h)

Извлекает строку, представляющую имя ключа.

Синтаксис

int GetKeyNameTextA(
  [in]  LONG  lParam,
  [out] LPSTR lpString,
  [in]  int   cchSize
);

Параметры

[in] lParam

Тип: LONG

Второй параметр обрабатываемого сообщения клавиатуры (например , WM_KEYDOWN). Функция интерпретирует следующие позиции битов в lParam.

Bits Значение
16—23 Код сканирования. Значение зависит от изготовителя оборудования.
24 Указывает, является ли клавиша расширенной, например клавишами ALT и CTRL справа, которые отображаются на клавиатуре с расширенными 101- или 102-клавишными клавишами. Значение равно 1, если это расширенный ключ; в противном случае — 0.
25 "Не волнует" бит. Приложение, вызывающее эту функцию, задает этот бит, чтобы указать, что функция не должна различать левую и правую клавиши CTRL и SHIFT, например.

Дополнительные сведения см. в разделе Флаги сообщения нажатия клавиш.

[out] lpString

Тип: LPTSTR

Буфер, который получит имя ключа.

[in] cchSize

Тип: int

Максимальная длина (в символах) имени ключа, включая завершающий символ NULL. (Этот параметр должен быть равен размеру буфера, на который указывает параметр lpString .)

Возвращаемое значение

Тип: int

Если функция выполняется успешно, строка, завершающаяся значением NULL, копируется в указанный буфер, а возвращаемое значение — это длина строки в символах, не подсчитывающая завершающий нуль-символ.

Если функция выполняется неудачно, возвращается нулевое значение. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.

Комментарии

Формат строки "ключ-имя" зависит от текущей раскладки клавиатуры.

В раскладке клавиатуры хранится список имен в виде строк символов для клавиш с именами длиннее одного символа. Имя клавиши преобразуется в соответствии с текущей активной раскладкой клавиатуры, поэтому функция может возвращать разные результаты для разных раскладок клавиатуры.

Имя клавиши символа — это сам символ. Имена неуклюжих ключей приведены полностью.

Этот метод может неправильно работать с некоторыми раскладками клавиатуры , которые создают несколько символов (т. е. лигатуры) и /или дополнительные символы Юникода, которые печатаются одним нажатием клавиши. Кроме того, ключи, сопоставленные с "A". Коды виртуальных ключей Z преобразуются в верхний регистр "A". Z' символы независимо от текущей раскладки клавиатуры. В таких случаях используйте методы ToUnicode или ToUnicodeEx .

Заголовок winuser.h определяет GetKeyNameText как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОД. Использование псевдонима, не зависящий от кодирования, с кодом, который не является нейтральным для кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или времени выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.

Требования

   
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header winuser.h (включая Windows.h)
Библиотека User32.lib
DLL User32.dll

См. также раздел

Ввод с клавиатуры

Раскладки клавиатуры

Примеры раскладки клавиатуры

ToUnicode

ToUnicodeEx