Функция TranslateMessage переводит сообщения виртуальных клавиш в символьные сообщения. Символьные сообщения помещаются в очереди сообщений вызывающего потока для прочтения в следующий раз, когда поток вызовет функцию GetMessage или PeekMessage.
Синтаксис
BOOL TranslateMessage( const MSG* lpMsg ); |
Параметры
lpMsg
[in] Указатель на структуру MSG, которая содержит информацию о сообщении извлеченную из очереди сообщений вызывающего потока при помощи использования функции GetMessage или PeekMessage.Возвращаемые значения
Если сообщение переведено (то есть символьное сообщение помещено в очереди сообщений потока), величина возвращаемого значения не нуль.
Если сообщение является WM_KEYDOWN, WM_KEYUP, WM_SYSKEYDOWN или WM_SYSKEYUP, величина возвращаемого значения - не ноль, независимо от результата перевода.
Если сообщение не переведено (то есть символьное сообщение не помещено в очереди сообщений потока), величина возвращаемого значения - нуль.
Замечания
Функция TranslateMessage не изменяет сообщение, указанное параметром lpMsg.
Комбинации WM_KEYDOWN и WM_KEYUP создают сообщение WM_DEADCHAR или WM_CHAR. Комбинации WM_SYSKEYDOWN и WM_SYSKEYUP создают сообщение сообщение WM_SYSDEADCHAR или WM_SYSCHAR.
TranslateMessage создает сообщения WM_CHAR только для клавиш, которые отображают символы ASCII при помощи драйвера клавиатуры.
Если прикладные программы обрабатывают сообщения виртуальной клавиши для некоторой другой цели, они не должны вызвать TranslateMessage. Например, прикладная программа не должна вызывать TranslateMessage если функцией TranslateAccelerator возвращается значение не нуль.
Обратите внимание! на то, что то, что приложение ответственно за извлечение и диспетчеризацию сообщений о вводе данных блока диалога. Большинство прикладных программ использует для этого главный цикл сообщений . Однако, чтобы дать возможность пользователю перемещаться и выбирать органы управления при помощи использования клавиатуры, приложение должна обратиться к функции IsDialogMessage. |
Для получения дополнительной информации, см. статью Клавиатурный интерфейс блока диалога.
Windows 95/98/Me: TranslateMessage поддерживается подпрограммой Microsoft Layer for Unicode (MSLU). Чтобы использовать подпрограмму, Вы должны добавить некоторые файлы к вашему приложению, как это определено в Microsoft Layer for Unicode для систем Windows 95/98/Me.
Пример
Пример смотри в статье Создание цикла сообщений.
Смотри также
Обзор Сообщения и очереди сообщений, GetMessage, IsDialogMessage, PeekMessage, TranslateAccelerator, WM_CHAR, WM_DEADCHAR, WM_KEYDOWN, WM_KEYUP, WM_SYSCHAR, WM_SYSDEADCHAR, WM_SYSKEYDOWN, WM_SYSKEYUP
Размещение и совместимость TranslateMessage |
|
Windows. NET Server |
Да |
Windows XP |
Да |
Windows 2000 |
Да |
Windows NT |
Да версии 3.1 и выше |
Windows Me |
Да |
Windows 98 |
Да |
Windows 95 |
Да |
Используемая библиотека |
User32.lib |
Заголовочный файл |
|
- объявлено в |
Winuser.h |
- включено в |
Windows.h |
Unicode |
Нет |
Замечания по платформе |
Не имеется |