IVideoWindow::p ut_FullScreenMode 方法 (control.h)

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

方法 put_FullScreenMode 启用或禁用全屏视频呈现。

语法

HRESULT put_FullScreenMode(
  [in] long FullScreenMode
);

参数

[in] FullScreenMode

指定是启用或禁用全屏模式的布尔值。 必须是以下值之一:

说明
OATRUE 切换到全屏模式。
OAFALSE 禁用全屏模式。 (默认。)

返回值

可能的返回值包括:

返回代码 说明
E_NOTIMPL
筛选器不支持全屏模式。
S_FALSE
已处于请求的模式。
S_OK
成功。
VFW_E_NO_FULLSCREEN
找不到任何支持全屏模式的筛选器。

备注

根据视频呈现器的不同,在应用程序运行或暂停图形之前,切换到全屏模式可能不可见。 在全屏模式下,如果用户 ((例如,使用 Alt + TAB) )离开应用程序,则 Filter Graph 管理器将发送 EC_FULLSCREEN_LOST 事件。

以下说明介绍了 Filter Graph 管理器如何实现全屏模式。 应用程序开发人员可能会忽略此信息,但如果你正在编写自定义视频呈现器,它可能会很有用。

当应用程序切换到全屏模式时,筛选器图形管理器会搜索运行效率最高的视频呈现器。 按优先顺序排列::

  1. 筛选器图中本机支持全屏模式的任何视频呈现器。
  2. 筛选器图中的任何视频呈现器都可以将视频拉伸到全屏,而不会产生巨大的性能成本。
  3. 全屏呈现器筛选器。
  4. 筛选器图中支持 IVideoWindow 的任何视频呈现器。
对于第一个选项,筛选器图形管理器在图形中的每个视频呈现器上调用 IVideoWindow::get_FullScreenMode 。 大多数呈现器返回E_NOTIMPL,表示筛选器本身不支持全屏模式。 如果任何呈现器返回的值不等于 E_NOTIMPL,则 Filter Graph 管理器将使用该值。

对于第二个选项,筛选器图形管理器在图形中的每个视频呈现器上调用 IVideoWindow::GetMaxIdealImageSizeGetMinIdealImageSize 。 如果显示器的大小在筛选器的报告范围内,则表示筛选器可以拉伸视频,而不会产生巨大的性能成本。

注意 如果图形已停止,筛选器图形管理器会在调用这些方法之前暂停每个呈现器。 这为呈现器提供了初始化它所需的任何资源的机会,因为许多呈现器在停止这些值时无法确定这些值。
 
除了在较旧的硬件上,第二个选项通常会成功。 第三个选项是使用全屏呈现器筛选器,如有必要,将其添加到图形。 第四个选项只是在图形中找到支持 IVideoWindow 的第一个呈现器,并拉伸视频,而不考虑性能。

要求

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

另请参阅

错误和成功代码

IVideoWindow 接口

IVideoWindow::get_FullScreenMode