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

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

Синтаксис

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

Параметры

[in] lParam

Тип: LONG

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

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

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

[out] lpString

Тип: LPTSTR

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

[in] cchSize

Тип: int

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

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

Тип: int

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

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

Замечания

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

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

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

Клавиши символов, сопоставленные с "A". Коды виртуальных ключей преобразуются в <<БУКВЫ ЛАТИНСКОЙ БУКВЫ U+0041 ЛАТИНСКАЯ БУКВА A>..<СИМВОЛЫ БУКВЫ ЛАТИНСКОЙ БУКВы U+005A LATIN LETTER Z> независимо от текущей раскладки клавиатуры. В этом случае используйте методы ToUnicode или ToUnicodeEx, чтобы получить символ для соответствующего нажатия клавиши.

Этот метод может неправильно работать с некоторыми раскладками клавиатуры, которые создают несколько символов (например, лигатуры) или дополнительные символы Юникода на одном нажатии клавиши.

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

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 2000 Профессиональный [только классические приложения]
минимальный поддерживаемый сервер Windows 2000 Server [только классические приложения]
целевая платформа Виндоус
заголовка winuser.h (включая Windows.h)
библиотеки User32.lib
DLL User32.dll

См. также

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

макеты клавиатуры

примеры макета клавиатуры

ToUnicode

ToUnicodeEx