显示 VFW 捕获对话框
[与此页面关联的功能 DirectShow 是旧版功能。 它已被 MediaPlayer、 IMFMediaEngine 和 Media Foundation 中的音频/视频捕获所取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能在 Media Foundation 中使用 MediaPlayer、 IMFMediaEngine 和 音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]
仍使用 Windows 视频 (VFW) 驱动程序的捕获设备可以支持以下三个对话框中的任何一个,这些对话框用于配置设备。
对话框 | 说明 |
---|---|
视频源 | 用于选择视频输入并调整设备设置,例如图片亮度或对比度。 |
视频格式 | 用于选择图像尺寸和位深度。 |
视频显示 | 用于控制呈现的视频的外观。 |
若要显示其中一个对话框,请执行以下操作:
- 停止筛选器图。
- 查询 IAMVfwCaptureDialogs 接口的捕获筛选器。 如果 QueryInterface 成功,则表示捕获设备是 VFW 设备。
- 如果驱动程序支持要显示的对话框,请调用 IAMVfwCaptureDialogs::HasDialog 以检查。 VfwCaptureDialogs 枚举为每个 VFW 对话框定义标志。 如果支持对话框,HasDialog 将返回S_OK。 否则,它返回S_FALSE,因此检查值直接S_OK,而不是使用 SUCCEEDED 宏。
- 如果对话框受支持,请调用 IAMVfwCaptureDialogs::ShowDialog 以显示对话框。
- 重启图形。
以下代码演示“视频源”对话框的这些步骤:
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();
相关主题