|
IOleInPlaceFrame::TranslateAccelerator
Translates accelerator keystrokes intended for the container's frame while an
object is active in place.
HRESULT TranslateAccelerator(
LPMSG lpmsg,
| //Points to MSG structure
| WORD wID
| //Command Identifier value
| );
|
|
Parameters
lpmsg
[in] Points to an MSG structure containing the keystroke message.
wID
[in] Contains the command identifier value corresponding to the keystroke in
the container-provided accelerator table. Containers should use this value
instead of translating again.
Return Values
S_OK
The keystroke was used.
S_FALSE
The keystroke was not used.
E_INVALIDARG
One or more arguments are invalid.
E_UNEXPECTED
An unexpected error occurred.
Comments
Notes to Callers
The IOleInPlaceFrame::TranslateAccelerator method is called indirectly by OleTranslateAccelerator when a keystroke accelerator intended for the container (frame) is received.
Notes to Implementors
The container application should perform its usual accelerator processing, or
use wID directly, and then return, indicating whether the keystroke accelerator was
processed. If the container is an MDI application and the Windows TranslateAccelerator call fails, the container can call the Windows TranslateMDISysAccel function, just as it does for its usual message processing.
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 IOleInPlaceActiveObject::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.
Note 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.
See Also
OleTranslateAccelerator, IOleInPlaceActiveObject::TranslateAccelerator
TranslateAccelerator, TranslateMessage, DispatchMessage, TranslateMDISysAccel in Win32
Related LinksSoftware for Delphi and C++ Builder developers Software for Visual Studio .NET developers Software for Visual Basic 6 developers Delphi Tips&Tricks MegaDetailed.NET More Online Helps Win32 Programmer's Reference (win32.hlp) Win32 Multimedia Programmer's Reference (mmedia.hlp) Microsoft Windows Pen API Programmer's Reference (penapi.hlp) Microsoft Windows Sockets 2 Reference (sock2.hlp) Microsoft Windows Telephony API (TAPI) Programmer's Reference (sock2.hlp) Unix Manual Pages
|