# IsAccelerator

Determines whether the keystroke maps to an accelerator in the given accelerator table.

BOOL IsAccelerator(

HACCEL hAccel, | //Handle to accelerator table
INT cAccelEntries, | //Number of entries in the accelerator table
LPMSG lpMsg, | //Pointer to the keystroke message to be translated
WORD * lpwCmd | //Pointer to return the corresponding command identifier
); |

Parameters

hAccel
  [in] Handle to the accelerator table.
cAccelEntries
  [in] Number of entries in the accelerator table.
lpMsg
  [in] Pointer to the keystroke message to be translated.
lpwCmd
  [out] Pointer to where to return the corresponding command identifier if there is an accelerator for the keystroke. It may be NULL.

Return Values

TRUE
  The message is for the object application.
FALSE
  The message is not for the object and should be forwarded to the container.

Remarks

While an object is active in-place, the object always has first chance to translate the keystrokes into accelerators. If the keystroke corresponds to one of its accelerators, the object must not call the OleTranslateAccelerator function &emdash; even if its call to the Windows TranslateAccelerator function fails. Failure to process keystrokes in this manner can lead to inconsistent behavior.

If the keystroke is not one of the object’s accelerators, then the object must call OleTranslateAccelerator to let the container try its accelerator translation.

The object’s server can call IsAccelerator to determine if the accelerator message belongs to it. Some servers do accelerator translation on their own and do not call TranslateAccelerator. Those applications will not call IsAccelerator, because they already have the information.

See Also

OleTranslateAccelerator, TranslateAccelerator in Win32