Функция TranslateMessage


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

Синтаксис

BOOL TranslateMessage(
    const MSG* lpMsg
);

Параметры

lpMsg

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

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

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

Если сообщение является WM_KEYDOWN, WM_KEYUPWM_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.

Пример

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

Смотри также

Обзор Сообщения и очереди сообщений, GetMessageIsDialogMessagePeekMessageTranslateAcceleratorWM_CHARWM_DEADCHARWM_KEYDOWNWM_KEYUPWM_SYSCHARWM_SYSDEADCHARWM_SYSKEYDOWNWM_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

Нет

Замечания по платформе

Не имеется

 

Назад в оглавление
На главную страницу
На оглавление справки

Hosted by uCoz