|
| БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО! |
|
|
TranslateAccelerator
The TranslateAccelerator function processes accelerator keys for menu commands. The function translates a WM_KEYDOWN or WM_SYSKEYDOWN message to a WM_COMMAND or WM_SYSCOMMAND message (if there is an entry for the key in the specified accelerator table) and then sends the WM_COMMAND or WM_SYSCOMMAND message directly to the appropriate window procedure. TranslateAccelerator does not return until the window procedure has processed the message.
int TranslateAccelerator(
HWND hWnd, // handle of destination window HACCEL hAccTable, // handle of accelerator table LPMSG lpMsg // address of structure with message );
Parameters
hWnd
Identifies the window whose messages are to be translated.
hAccTable
Identifies an accelerator table. The accelerator table must have been loaded by a call to the LoadAccelerators function or created by a call to the CreateAcceleratorTable function.
lpMsg
Points to an MSG structure that contains message information retrieved from the calling thread's message queue by using the GetMessage or PeekMessage function.
Return Values
If the function succeeds, the return value is TRUE. If the function fails, the return value is FALSE. To get extended error information, call GetLastError.
Remarks
To differentiate the message that this function sends from messages sent by menus or controls, the high-order word of the wParam parameter of the WM_COMMAND or WM_SYSCOMMAND message contains the value 1. Accelerator key combinations used to select items from the window menu are translated into WM_SYSCOMMAND messages; all other accelerator key combinations are translated into WM_COMMAND messages. When TranslateAccelerator returns a nonzero value and the message is translated, the application should not use the TranslateMessage function to process the message again.
An accelerator need not correspond to a menu command. If the accelerator command corresponds to a menu item, the application is sent WM_INITMENU and WM_INITMENUPOPUP messages, as if the user were trying to display the menu. However, these messages are not sent if any of the following conditions exist:
· The window is disabled. · The menu item is disabled. · The accelerator key combination does not correspond to an item on the window menu and the window is minimized. · A mouse capture is in effect. For information about mouse capture, see the SetCapture function.
If the specified window is the active window and no window has the keyboard focus (which is generally the case if the window is minimized), TranslateAccelerator translates WM_SYSKEYUP and WM_SYSKEYDOWN messages instead of WM_KEYUP and WM_KEYDOWN messages. If an accelerator keystroke occurs that corresponds to a menu item when the window that owns the menu is minimized, TranslateAccelerator does not send a WM_COMMAND message. However, if an accelerator keystroke occurs that does not match any of the items in the window's menu or in the window menu, the function sends a WM_COMMAND message, even if the window is minimized.
See Also
CreateAcceleratorTable, GetMessage, LoadAccelerators, MSG, PeekMessage, SetCapture, TranslateMessage, WM_COMMAND, WM_INITMENU, WM_INITMENUPOPUP, WM_KEYDOWN, WM_SYSKEYDOWN, WM_SYSCOMMAND
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
TranslateAccelerator
Функция TranslateAccelerator обрабатывает клавиши акселератора для команд меню. Функция переводится WM_KEYDOWN или сообщение WM_SYSKEYDOWN в WM_COMMAND или сообщение WM_SYSCOMMAND (если есть вход для клавиши в определенной таблице акселератора) и тогда посылает WM_COMMAND или сообщение WM_SYSCOMMAND непосредственно в подходящую процедуру окна. TranslateAccelerator НЕ возвращается пока процедура окна не обработала сообщение.
int TranslateAccelerator(
HWND hWnd, // РУЧКА окна расположения HACCEL hAccTable, // ручки таблицы акселератора LPMSG lpMsg // адрес структуры с сообщением );
Параметры
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, как будто пользователь пытался отображать меню. Тем не менее, эти сообщения не посланы если любое из следующих условий существуют:
Окно выведено из строя. Пункт меню выведен из строя. Ключевая комбинация акселератора не переписывается в пункт в меню окна и окно минимизировано. Сбор мыши в силе. Для информации о сборе мыши, смотри функцию SetCapture.
Если определенное окно является активным окном и никакое окно не имеет клавишный фокус (который - обычно случай если окно минимизировано), TranslateAccelerator переводится WM_SYSKEYUP и сообщения WM_SYSKEYDOWN вместо WM_KEYUP и сообщений WM_KEYDOWN. Если нажатие клавиши акселератора происходит, что переписывается в пункт меню когда окно, которое обладает меню минимизирован, TranslateAccelerator не посылает сообщение WM_COMMAND. Тем не менее, если нажатие клавиши акселератора происходит, что не соответствует любому из пунктов в меню окна или в меню окна, функция посылает сообщение WM_COMMAND, даже если бы окно минимизировано.
Смотри Также
CreateAcceleratorTable, GetMessage, LoadAccelerators, MSG, PeekMessage, SetCapture, TranslateMessage, WM_COMMAND, WM_INITMENU, WM_INITMENUPOPUP, WM_KEYDOWN, WM_SYSKEYDOWN, WM_SYSCOMMAND
|
|
|
|
| |