Поделиться через


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

Преобразует сообщения с виртуальным ключом в символьные сообщения. Символьные сообщения помещаются в очередь сообщений вызывающего потока, чтобы их можно было прочитать при следующем вызове функции GetMessage или PeekMessage .

Синтаксис

BOOL TranslateMessage(
  [in] const MSG *lpMsg
);

Параметры

[in] lpMsg

Тип: const MSG*

Указатель на структуру MSG , содержащую сведения о сообщении, полученные из очереди сообщений вызывающего потока с помощью функции GetMessage или PeekMessage .

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

Тип: BOOL

Если сообщение переведено (то есть символьное сообщение помещается в очередь сообщений потока), возвращаемое значение будет ненулевым.

Если сообщение имеет значение WM_KEYDOWN, WM_KEYUP, WM_SYSKEYDOWN или WM_SYSKEYUP, возвращаемое значение будет ненулевым, независимо от перевода.

Если сообщение не переведено (то есть символьное сообщение не помещается в очередь сообщений потока), возвращаемое значение равно нулю.

Комментарии

Функция TranslateMessage не изменяет сообщение, на которое указывает параметр lpMsg .

WM_KEYDOWN и WM_KEYUP сочетания создают WM_CHAR или WM_DEADCHAR сообщение. WM_SYSKEYDOWN и WM_SYSKEYUP сочетания создают сообщение WM_SYSCHAR или WM_SYSDEADCHAR .

TranslateMessage создает WM_CHAR сообщений только для клавиш, сопоставленных с символами ASCII драйвером клавиатуры.

Если приложения обрабатывают сообщения с виртуальным ключом для какой-то другой цели, они не должны вызывать TranslateMessage. Например, приложение не должно вызывать TranslateMessage , если функция TranslateAccelerator возвращает ненулевое значение. Обратите внимание, что приложение отвечает за получение и отправку входных сообщений в диалоговое окно. Большинство приложений используют для этого цикл сообщений main. Тем не менее, чтобы разрешить пользователю переходить к элементам управления и выбирать их с помощью клавиатуры, приложение должно вызвать IsDialogMessage. Дополнительные сведения см. в разделе Интерфейс клавиатуры диалогового окна.

Примеры

Пример см. в разделе Создание цикла сообщений.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header winuser.h (включая Windows.h)
Библиотека User32.lib
DLL User32.dll
Набор API ext-ms-win-ntuser-message-l1-1-0 (появилось в Windows 8)

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