从vfwwdm32.dll显示“Camera Controls”对话框

问题描述 投票:0回答:1

我正在开发一个网络摄像头应用程序,并希望重新使用看起来是相机控件的标准对话框(那些配置网络摄像头设置,如亮度,缩放,闪烁补偿等)。经过一番挖掘后,我发现vfwwdm32.dll中有必要的对话框资源,对话框ID为102405。是的,这是一个适用于1992年左右的古代Video For Windows的DLL。

可以通过DirectShow访问对话框资源,如MSDN article中所述,使用IAMVfwCaptureDialogs提供的界面。


问题#1: 我是以错误的方式去做的吗?如果在Windows中可以使用这些对话框的另一个(更现代的)实现,我应该使用它? 我想避免使用“首选”方法重新实现这些,通过查询WDM本身的可用控件来构建我自己的GUI,而只是使用已经由MS构建的对话框。特别是因为它们非常适合我的需求。


问题#2(主要问题): 鉴于我的应用程序不是基于DirectShow(它是基于MS Media Foundation),我不想依赖于DirectShow的遗产。这意味着我使用Displaying a dialog resource from...中描述的方法,它基本上归结为LoadLibrary()-> FindResource()-> LoadResource()-> LockResource()-> CreateDialogIndirectParam()

我遇到的问题是对话框需要知道要控制哪个摄像头。据推测,这是通过对话框的输入参数完成的(我松散地使用该术语,因为它实际上不是一个函数,而是一个对话框数据交换过程)。

如何为对话框提供必要的信息,以便正确使用我选择的相机?

更一般地说:如何使用该对话框实现数据交换?

winapi dll dialog webcam webcam-capture
1个回答
1
投票

您不应该重用对话框 - 您应该只使用API​​来使用它们。

然后,如果您处理视频捕获硬件的主要API是Media Foundation,那么此UI根本不适用。 UI属于Video for Windows,当您使用传统VFW捕获过滤器在DirectShow中捕获视频时,您也可以在DirectShow中使用它(在有限范围内)。

Media Foundation可以使用相同的硬件,但它会在较低级别与它进行对话,并且VFW对话框不适用。

您应该提供自己的UI,使用Media Foundation界面与设备进行通信。并且没有理由要使用VFW DLL中的对话框模板。

© www.soinside.com 2019 - 2024. All rights reserved.