IOleInPlaceFrame::TranslateAccelerator 方法 (oleidl.h)

在对象就地处于活动状态时,转换用于容器帧的快捷键击。

语法

HRESULT TranslateAccelerator(
  [in] LPMSG lpmsg,
  [in] WORD  wID
);

parameters

[in] lpmsg

指向包含击键消息的 MSG 结构的指针。

[in] wID

与容器提供的快捷键表中的击键对应的命令标识符值。 容器应使用此值,而不是再次转换。

返回值

此方法在成功时返回S_OK。 其他可能的返回值包括以下内容。

返回代码 说明
S_FALSE
未使用击键。
E_INVALIDARG
指定的指针无效。
E_UNEXPECTED
发生了意外错误。

注解

给调用方的说明

收到用于容器 (帧) 的键击加速器时,OleTranslateAccelerator 间接调用 IOleInPlaceFrame::TranslateAccelerator 方法。

实施者说明

容器应用程序应执行其通常的加速器处理,或直接使用 wID ,然后返回 ,指示是否已处理击键加速器。 如果容器是 MDI 应用程序,而 TranslateAccelerator 函数失败,则容器可以调用 TranslateMDISysAccel 函数,就像它通常的消息处理一样。

在转换加速键消息时,应首先为就地对象提供机会。 但是,由于 DLL 对象应用程序实现的对象没有其自己的消息泵,因此它们从容器的消息队列接收消息。 若要确保对象具有翻译消息的第一个机会,容器在执行自己的加速器转换之前应始终调用 IOleInPlaceFrame::TranslateAccelerator 。 相反,可执行对象应用程序应在调用 TranslateAccelerator 之后调用 OleTranslateAccelerator,仅当两个转换函数都失败时才调用 TranslateMessageDispatchMessage

应为容器定义加速器表,以便它们能够与执行自己的加速器击键转换的对象应用程序正常工作。 表的定义应如下所示。

"char", wID, VIRTKEY, CONTROL

这是描述键盘快捷键的最常见方法。 否则,可能导致在就地会话期间击键丢失或发送到错误对象。

要求

   
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 oleidl.h

请参阅

IOleInPlaceFrame

IOleInPlaceFrame::TranslateAccelerator

OleTranslateAccelerator

TranslateAccelerator

TranslateMDISysAccel