TranslateAccelerator

Функция TranslateAccelerator обрабатывает сочетания клавиш для команд меню. Функция переводит WM_KEYDOWN или WM_SYSKEYDOWN сообщение сообщения WM_COMMAND или WM_SYSCOMMAND (если есть запись для ключа в таблице сочетаний клавиш указанного) и затем посылает WM_COMMAND или WM_SYSCOMMAND непосредственно к процедуре соответствующие окна. TranslateAccelerator не возвращается до тех пор, пока сообщение обработано процедурой окна.

 int TranslateAccelerator) HWND  hWnd, / / дескриптор окна назначенияHACCELhAccTable, / / обработать таблицу сочетаний клавишLPMSGlpMsg / / адрес структуры с сообщением);
 

Параметры

hWnd
Дескриптор окна, чьи сообщения должны быть переведены.
hAccTable
Дескриптор таблицы сочетаний клавиш. Таблица сочетаний клавиш должны были загружены с помощью вызова функции LoadAccelerators или путем вызова функции CreateAcceleratorTable.
lpMsg
Указатель на структуру MSG , содержащая сведения о сообщениях, полученных из очереди сообщений вызывающего потока, используя функции GetMessage или PeekMessage.

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

Если функция выполнена успешно, возвращаемое значение не равно нулю.

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

Примечания

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

Сочетания клавиш ускоритель используется для выбора элементов из меню окно переводятся на WM_SYSCOMMAND сообщений; все другие сочетания клавиш сочетания переводятся на сообщения WM_COMMAND.

Когда TranslateAccelerator возвращает ненулевое значение и сообщение транслируется, в приложении не следует использовать функцию TranslateMessage для обработки сообщения снова.

Ускоритель не обязательно должно соответствовать в команду меню.

Если команда ускоритель соответствует элемент меню, приложение отправляется сообщений WM_INITMENU и WM_INITMENUPOPUP , как если бы пользователь пытается отобразить меню. Однако эти сообщения не отправляются, если существует какой-либо из следующих условий:

Если указанное окно окно является активным и не окно имеет фокус клавиатуры (что происходит как правило если окно свернуто), TranslateAccelerator переводит сообщения WM_SYSKEYUP и WM_SYSKEYDOWN вместо того, WM_KEYUP и WM_KEYDOWN сообщений.

В случае сочетания клавиш, соответствующий элемент меню свернутое окно, которому принадлежит меню TranslateAccelerator не отправляет сообщения WM_COMMAND. Однако если нажатие клавиши ускорителя, не соответствует ни одному из пунктов в меню окна или в меню , функция отправляет сообщения WM_COMMAND, даже если окно свернуто.

Windows CE: Все ускорителя ключевые сообщения преобразуются в сообщения WM_COMMAND; Windows CE не поддерживает WM_SYSCOMMAND сообщение.

QuickInfo

nbsp; Windows &NT: требует версии 3.1 или более поздней версии.
Windows:Требует Windows 95 или более поздней версии.
Windows CE:Требует версии 1.0 или более поздней версии.
Заголовок:Объявленные в winuser.h.
Импорта библиотеки:Используйте user32.lib.
Юникод:В версии Юникода и ANSI в Windows NT.

Родственные слова

Обзор ускорителями клавиатуры, функции сочетаний клавиш клавиатуры, CreateAcceleratorTable, GetMessage, LoadAccelerators, MSG, PeekMessage, SetCapture, TranslateMessage, WM_COMMAND, WM_INITMENU, WM_INITMENUPOPUP, WM_KEYDOWN, WM_SYSKEYDOWN, WM_SYSCOMMAND

Index