IPreviewHandler::TranslateAccelerator 方法 (shobjidl_core.h)

指示预览处理程序处理从正在运行预览处理程序的进程的消息泵传递的击键。

语法

HRESULT TranslateAccelerator(
  [in] MSG *pmsg
);

参数

[in] pmsg

类型: MSG*

指向窗口消息的指针。

返回值

类型: HRESULT

如果预览处理程序可以处理击键消息,则处理程序将处理它并返回 S_OK。 如果预览处理程序无法处理击键消息,它将使用 TranslateAccelerator 将其提供给主机。 如果主机处理消息,此方法将返回 S_OK。 如果主机不处理消息,此方法将返回 S_FALSE

注解

仅从运行预览处理程序的进程的消息泵调用此函数。 此函数允许使用 TranslateAccelerator 将消息从消息泵转发到主机。

当预览处理程序从其消息泵接收 (击键) 的消息时,它负责将其转发到其主机。

在预览处理程序上调用 IObjectWithSite::SetSite 时,将传入对预览处理程序主机的引用。 对象应立即 查询 该站点的 IPreviewHandlerFrame,并存储该指针。

然后,预览处理程序可以选择调用 GetWindowContext 来获取用于筛选击键的快捷键表。 然后,预览可以使用 IsAccelerator 将击键与该快捷键表进行比较,并且仅调用 IPreviewHandler::TranslateAccelerator 进行匹配的击键。 这可能会导致性能适度提高。 预览处理程序必须使用 DestroyAcceleratorTable 函数释放加速器表。

预览处理程序也可以完全避免使用表,并为每个击键调用 IPreviewHandler::TranslateAccelerator 。 请注意,在低完整性进程中运行的所有预览处理程序都必须使用此方法。

按下 Tab 键时,如果预览处理程序有多个制表位,它将负责在这些制表位内移动键盘焦点。 如果当前键盘焦点位于其中一个制表位上,并且推进键盘焦点会将其移动到另一个预览器制表位,则预览器应在下一个制表位上调用 SetFocus。 否则,选项卡键应转发到主机,以处理从预览器中移出 Tab 键。

要求

   
最低受支持的客户端 Windows Vista、Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 shobjidl_core.h (包括 Shobjidl.h)
可再发行组件 Windows 搜索 4 或更高版本