显示 VFW 捕获对话框

[与此页面关联的功能 DirectShow 是旧版功能。 它已被 MediaPlayerIMFMediaEngineMedia Foundation 中的音频/视频捕获所取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能在 Media Foundation 中使用 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();

配置视频捕获设备