Функция TranslateAccelerator обрабатывает сочетания клавиш для команд меню. Функция переводит WM_KEYDOWN или WM_SYSKEYDOWN сообщение сообщения WM_COMMAND или WM_SYSCOMMAND (если есть запись для ключа в таблице сочетаний клавиш указанного) и затем посылает WM_COMMAND или WM_SYSCOMMAND непосредственно к процедуре соответствующие окна. TranslateAccelerator не возвращается до тех пор, пока сообщение обработано процедурой окна.
int TranslateAccelerator) HWND hWnd, / / дескриптор окна назначенияHACCELhAccTable, / / обработать таблицу сочетаний клавишLPMSGlpMsg / / адрес структуры с сообщением);
Если функция выполнена успешно, возвращаемое значение не равно нулю.
Если вызов функции был неуспешен, возвращаемое значение равно нулю. Чтобы получить расширенные сведения об ошибке, вызовите 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 сообщение.
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