IVideoWindow 接口 (control.h)

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

接口 IVideoWindow 在视频窗口上设置属性。 应用程序可以使用它来设置窗口所有者、窗口的位置和尺寸以及其他属性。

注意IVMRWindowlessControlIVMRWindowlessControl9 接口现在优先于 IVideoWindow。 有关详细信息,请参阅 使用无窗口模式
 
视频呈现器筛选器和筛选器关系图管理器都公开此接口。 Filter Graph 管理器将所有方法调用转发到视频呈现器。 它还转发视频呈现器需要接收的某些窗口消息,例如 WM_DISPLAYCHANGE。 由于视频窗口通常是应用程序窗口的子窗口,因此筛选器不会接收这些消息。 因此,它依赖于 Filter Graph 管理器转发它们。

在大多数情况下,应用程序应查询筛选器关系图管理器以获取此接口,而不是直接调用筛选器,因为上述消息传送问题。 但是,如果筛选图具有多个视频呈现器,则筛选器图形管理器仅与其中一个通信,并任意选择。 因此,如果应用程序使用多个视频窗口,请 IVideoWindow 直接在筛选器上使用 接口。 在这种情况下,必须使用 IVideoWindow::NotifyOwnerMessage 方法将窗口消息转发到每个视频呈现器实例。

若要防止视频窗口在重绘期间闪烁,请重写 WM_ERASEBKGND 消息的默认处理,不要擦除窗口。 (对于 MFC 应用程序,请使用空 handler 替代 CWnd::OnEraseBkgnd 。)

在视频呈现器上设置的属性在连续连接和断开连接之间保留。

由于此接口与自动化兼容,因此所有布尔值都定义为 OAFALSE (0) 和 OATRUE (–1) 。

错误代码: 如果视频呈现器筛选器未连接到另一个筛选器,则所有方法都会VFW_E_NOT_CONNECTED返回错误代码。 对于 Filter Graph Manager 的实现,如果图形不包含视频呈现器筛选器,则所有方法都会返回E_NOINTERFACE。 请注意,即使图形不包含视频呈现器,筛选器图形管理器也会公开接口,因此应用程序可以在生成图形之前查询接口。

筛选器开发人员: 可以使用 CBaseVideoWindow 类来帮助实现此接口。

继承

IVideoWindow 接口继承自 IDispatch 接口。 IVideoWindow 还具有以下类型的成员:

方法

IVideoWindow 接口具有这些方法。

 
IVideoWindow::get_AutoShow

get_AutoShow 方法查询视频呈现器在接收视频数据时是否自动显示视频窗口。
IVideoWindow::get_BackgroundPalette

get_BackgroundPalette 方法查询视频窗口是否在后台实现其调色板。
IVideoWindow::get_BorderColor

get_BorderColor 方法检索在目标矩形边缘周围显示的颜色。
IVideoWindow::get_Caption

get_Caption 方法检索视频窗口描述文字。
IVideoWindow::get_FullScreenMode

get_FullScreenMode 方法查询视频呈现器是否处于全屏模式。
IVideoWindow::get_Height

get_Height 方法检索视频窗口的高度。
IVideoWindow::get_Left

get_Left 方法检索视频窗口的 x 轴坐标。
IVideoWindow::get_MessageDrain

get_MessageDrain 方法检索从视频窗口接收鼠标和键盘消息的窗口(如果有)。
IVideoWindow::get_Owner

get_Owner 方法检索视频窗口的父窗口(如果有)。
IVideoWindow::get_Top

get_Top 方法检索视频窗口的 y 坐标。
IVideoWindow::get_Visible

get_Visible 方法查询视频窗口是否可见。
IVideoWindow::get_Width

get_Width 方法检索视频窗口的宽度。
IVideoWindow::get_WindowState

get_WindowState 方法查询视频窗口是可见、隐藏、最小化还是最大化。
IVideoWindow::get_WindowStyle

get_WindowStyle 方法检索视频窗口中的窗口样式。
IVideoWindow::get_WindowStyleEx

get_WindowStyleEx 方法检索视频窗口中的扩展窗口样式。
IVideoWindow::GetMaxIdealImageSize

GetMaxIdealImageSize 方法检索视频图像的最大理想图像大小。
IVideoWindow::GetMinIdealImageSize

GetMinIdealImageSize 方法检索视频图像的最小理想大小。
IVideoWindow::GetRestorePosition

GetRestorePosition 方法检索还原的窗口位置。
IVideoWindow::GetWindowPosition

GetWindowPosition 方法检索视频窗口的位置。
IVideoWindow::HideCursor

当鼠标位于视频窗口上时,HideCursor 方法显示或隐藏光标。
IVideoWindow::IsCursorHidden

IsCursorHidden 方法查询游标是否隐藏。
IVideoWindow::NotifyOwnerMessage

NotifyOwnerMessage 方法将消息转发到视频窗口。
IVideoWindow::p ut_AutoShow

put_AutoShow 方法指定视频呈现器在接收视频数据时是否自动显示视频窗口。
IVideoWindow::p ut_BackgroundPalette

put_BackgroundPalette 方法指定视频窗口是否在后台实现其调色板。
IVideoWindow::p ut_BorderColor

put_BorderColor 方法设置在目标矩形边缘周围显示的颜色。
IVideoWindow::p ut_Caption

put_Caption 方法设置视频窗口描述文字。
IVideoWindow::p ut_FullScreenMode

put_FullScreenMode 方法启用或禁用全屏视频呈现。
IVideoWindow::p ut_Height

put_Height 方法设置视频窗口的高度。
IVideoWindow::p ut_Left

put_Left 方法设置视频窗口的 x 坐标。
IVideoWindow::p ut_MessageDrain

put_MessageDrain 方法指定从视频窗口接收鼠标和键盘消息的窗口。
IVideoWindow::p ut_Owner

put_Owner 方法指定视频窗口的父窗口。
IVideoWindow::p ut_Top

put_Top 方法指定视频窗口的 y 坐标。
IVideoWindow::p ut_Visible

put_Visible 方法显示或隐藏视频窗口。
IVideoWindow::p ut_Width

put_Width 方法指定视频窗口的宽度。
IVideoWindow::p ut_WindowState

put_WindowState 方法显示、隐藏、最小化或最大化视频窗口。
IVideoWindow::p ut_WindowStyle

put_WindowStyle 方法设置视频窗口的窗口样式。
IVideoWindow::p ut_WindowStyleEx

put_WindowStyleEx 方法设置视频窗口上的扩展窗口样式。
IVideoWindow::SetWindowForeground

SetWindowForeground 方法将视频窗口置于 Z 顺序的顶部。
IVideoWindow::SetWindowPosition

SetWindowPosition 方法设置视频窗口的位置。

要求

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

另请参阅

IDispatch