TranslateAccelerator  34T4LO 

The TranslateAccelerator function processes accelerator keys for menu commands. The function translates a WM_KEYDOWNCXJO_P or WM_SYSKEYDOWN7.WA3P message to a WM_COMMAND71V.3J or WM_SYSCOMMAND3XMTV4T 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 LoadAccelerators1O0KAZE function or created by a call to the CreateAcceleratorTable.A6QXV function.

lpMsg

Points to an MSG5CTEF1 structure that contains message information retrieved from the calling thread s message queue by using the GetMessageIXKDTP or PeekMessage0X9XXX 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 GetLastError11C2VS7.

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_COMMAND71V.3J or WM_SYSCOMMAND3XMTV4T 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 TranslateMessageFHWOLF 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_INITMENU1MPWZ20 and WM_INITMENUPOPUPJWH_0Q 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 SetCapture1OZE0AK 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