IOleInPlaceFrame::TranslateAccelerator method (oleidl.h)
Translates accelerator keystrokes intended for the container's frame while an object is active in place.
HRESULT TranslateAccelerator(
[in] LPMSG lpmsg,
[in] WORD wID
);
[in] lpmsg
A pointer to the MSG structure that contains the keystroke message.
[in] wID
The command identifier value corresponding to the keystroke in the container-provided accelerator table. Containers should use this value instead of translating again.
This method returns S_OK on success. Other possible return values include the following.
Return code | Description |
---|---|
|
The keystroke was not used. |
|
The specified pointer is invalid. |
|
An unexpected error occurred. |
In-place objects should be given first chance at translating accelerator messages. However, because objects implemented by DLL object applications do not have their own message pump, they receive their messages from the container's message queue. To ensure that the object has first chance at translating messages, a container should always call IOleInPlaceFrame::TranslateAccelerator before doing its own accelerator translation. Conversely, an executable object application should call OleTranslateAccelerator after calling TranslateAccelerator, calling TranslateMessage and DispatchMessage only if both translation functions fail.
You should define accelerator tables for containers so they will work properly with object applications that do their own accelerator keystroke translations. Tables should be defined as follows.
"char", wID, VIRTKEY, CONTROL
This is the most common way to describe keyboard accelerators. Failure to do so can result in keystrokes being lost or sent to the wrong object during an in-place session.
Requirement | Value |
---|---|
Minimum supported client | Windows 2000 Professional [desktop apps only] |
Minimum supported server | Windows 2000 Server [desktop apps only] |
Target Platform | Windows |
Header | oleidl.h |