Функция TranslateAcceleratorA (winuser.h)
Обрабатывает клавиши акселератора для команд меню. Функция преобразует сообщение WM_KEYDOWN или WM_SYSKEYDOWN в сообщение WM_COMMAND или WM_SYSCOMMAND (если в указанной таблице акселератора есть запись), а затем отправляет сообщение WM_COMMAND или WM_SYSCOMMAND непосредственно в указанную процедуру окна. TranslateAccelerator не возвращается, пока процедура окна не обработала сообщение.
Синтаксис
int TranslateAcceleratorA(
[in] HWND hWnd,
[in] HACCEL hAccTable,
[in] LPMSG lpMsg
);
Параметры
[in] hWnd
Тип: HWND
Дескриптор окна, сообщения которого необходимо перевести.
[in] hAccTable
Тип: HACCEL
Дескриптор таблицы акселератора. Таблица акселератора должна быть загружена вызовом функции LoadAccelerator или созданной вызовом функции CreateAcceleratorTable.
[in] lpMsg
Тип: LPMSG
Указатель на структуру MSG, содержащую сведения о сообщении, полученные из очереди сообщений вызывающего потока с помощью функции GetMessage или PeekMessage.
Возвращаемое значение
Тип: int
Если функция выполнена успешно, возвращаемое значение ненулевое.
Если функция завершается ошибкой, возвращаемое значение равно нулю. Чтобы получить расширенные сведения об ошибке, вызовите GetLastError.
Замечания
Чтобы отличить сообщение, которое эта функция отправляет из сообщений, отправляемых меню или элементами управления, значение 1 содержит слово wParam параметра WM_COMMAND или WM_SYSCOMMAND сообщения.
Сочетания клавиш акселератора, используемые для выбора элементов из окна
Когда TranslateAccelerator возвращает ненулевое значение и сообщение преобразуется, приложение не должно использовать функцию TranslateMessage для повторной обработки сообщения.
Акселератор не должен соответствовать команде меню.
Если команда акселератора соответствует элементу меню, приложение отправляется WM_INITMENU и WM_INITMENUPOPUP сообщения, как будто пользователь пытается отобразить меню. Однако эти сообщения не отправляются, если существуют какие-либо из следующих условий:
- Окно отключено.
- Сочетание клавиш акселератора не соответствует элементу в окне меню, а окно свернуто.
- Запись мыши действует. Сведения о захвате мыши см. в функции SetCapture.
Если нажатие клавиш акселератора соответствует элементу меню, когда окно, владеющее меню, свернуто, TranslateAccelerator не отправляет сообщение WM_COMMAND. Однако если нажатие клавиш акселератора не соответствует ни одному из элементов в меню окна или в окне меню, функция отправляет сообщение WM_COMMAND, даже если окно свернуто.
Примеры
Пример см. в разделе создание акселераторов для атрибутов шрифта.
Заметка
Заголовок winuser.h определяет TranslateAccelerator как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОД. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows 2000 Профессиональный [только классические приложения] |
минимальный поддерживаемый сервер | Windows 2000 Server [только классические приложения] |
целевая платформа | Виндоус |
заголовка | winuser.h (включая Windows.h) |
библиотеки |
User32.lib |
DLL | User32.dll |
См. также
концептуальные
Справочник