IResourceManager::SetFocus 方法 (strmif.h)

[与此页面关联的功能 DirectShow 是一项旧功能。 它已被 MediaPlayerIMFMediaEngine媒体基金会中的音频/视频捕获取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用 MediaPlayerIMFMediaEngineMedia Foundation 中的音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]

方法 SetFocus 通知资源管理器指定对象已获得用户的焦点。

语法

HRESULT SetFocus(
  [in] IUnknown *pFocusObject
);

参数

[in] pFocusObject

指向已给予用户焦点的 对象的指针。

返回值

返回一个取决于实现的 HRESULT 值。 HRESULT 可以是以下标准常量之一,也可以是未列出的其他值。

返回代码 说明
E_FAIL
失败。
E_POINTER
NULL 指针参数。
E_INVALIDARG
无效的参数。
E_NOTIMPL
不支持方法。
S_OK 或 NOERROR
成功。

备注

在 DirectShow 中,给定用户焦点的对象通常是窗口已接收焦点的视频呈现器。 资源管理器按以下顺序优先处理资源请求:

  1. 使用 pFocusObject 参数中指定的焦点对象发出的请求。
  2. 其焦点对象共享公共源筛选器的请求。
  3. 其焦点对象共享公共筛选器图的请求。
  4. 与焦点位于同一进程中的请求。
设置焦点后,资源管理器必须维护焦点对象,直到调用 ReleaseFocus 。 也就是说,调用此方法后,必须在焦点对象的 IUnknown 接口失效之前使用 ReleaseFocus,除非可以保证SetFocus在此期间由其他对象调用。 焦点对象上不保留引用计数。

资源管理器将保留此指针,直到被替换或取消,并将使用它来解决资源争用。 它将至少对 IBaseFilter 接口使用 QueryInterface,如果找到,将在该接口上使用方法。 它在 IBaseFilter 上调用方法来决定使用哪个音频呈现器(如果有两个 (它将选择具有焦点对象) 通用的源筛选器的呈现器,并确定这两个对象是否位于同一筛选器图中。

要求

   
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 strmif.h (包括 Dshow.h)
Library Strmiids.lib

另请参阅

错误和成功代码

IResourceManager 接口