IVideoWindow 介面 (control.h)

[與此頁面 相關的功能 DirectShow 是舊版功能。 它已被 MediaPlayerIMFMediaEngineMedia Foundation 中的音訊/視訊擷取取代。 這些功能已針對 Windows 10 和 Windows 11 進行優化。 Microsoft 強烈建議新程式代碼盡可能使用 MediaPlayerIMFMediaEngine音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議盡可能重寫使用舊版 API 的現有程式代碼,以使用新的 API。]

介面 IVideoWindow 會在視訊視窗上設定屬性。 應用程式可以使用它來設定視窗擁有者、視窗的位置和維度,以及其他屬性。

注意IVMRWindowlessControlIVMRWindowlessControl9 介面現在優先於 IVideoWindow。 如需詳細資訊,請參閱 使用無視窗模式
 
影片 轉譯器 篩選和篩選圖形管理員都會公開此介面。 Filter Graph 管理員會將所有方法呼叫轉送至影片轉譯器。 它也會轉送視訊轉譯器需要接收的特定視窗訊息,例如 WM_DISPLAYCHANGE。 因為視訊視窗通常是應用程式視窗的子系,所以篩選不會收到這些訊息。 因此,它會依賴 Filter Graph 管理員來轉送它們。

在大部分情況下,應用程式應該查詢此介面的 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