共用方式為


顯示 VFW 擷取對話方塊

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

仍然使用適用于 Windows (VFW) 驅動程式的視訊的擷取裝置可支援下列三個對話方塊之一,這些對話方塊可用來設定裝置。

對話方塊 描述
視訊來源 用來選取視訊輸入,以及調整裝置設定,例如圖片亮度或對比。
視訊格式 用來選取影像維度和位深度。
視訊顯示 用來控制轉譯視訊的外觀。

 

若要顯示下列其中一個對話方塊,請執行下列動作:

  1. 停止篩選圖形。
  2. 查詢 IAMVfwCaptureDialogs 介面的擷取篩選。 如果 QueryInterface 成功,表示擷取裝置是 VFW 裝置。
  3. 呼叫 IAMVfwCaptureDialogs::HasDialog 來檢查驅動程式是否支援您想要顯示的對話方塊。 VfwCaptureDialogs列舉會定義每個 VFW 對話方塊的旗標。 如果支援對話方塊,HasDialog會傳回S_OK。 否則會傳回S_FALSE,因此請直接檢查值S_OK,而不是使用 SUCCEEDED 宏。
  4. 如果支援對話方塊,請呼叫 IAMVfwCaptureDialogs::ShowDialog 以顯示對話方塊。
  5. 重新開機圖形。

下列程式碼顯示 [影片來源] 對話方塊的這些步驟:

pControl->Stop(); // Stop the graph.

// Query the capture filter for the IAMVfwCaptureDialogs interface.
IAMVfwCaptureDialogs *pVfw = 0;
hr = pCap->QueryInterface(IID_IAMVfwCaptureDialogs, (void**)&pVfw);
if (SUCCEEDED(hr))
{
    // Check if the device supports this dialog box.
    if (S_OK == pVfw->HasDialog(VfwCaptureDialog_Source))
    {
        // Show the dialog box.
        hr = pVfw->ShowDialog(VfwCaptureDialog_Source, hwndParent);
    }
}
pControl->Run();

設定視訊擷取裝置