如何将属性页添加到DirectShow过滤器

时间:2016-10-08 17:06:34

标签: com directshow

我已经编写了DirectShow-Filter * .ax来集成硬件(相机)。所有工作都适用于我的filter.ax和运输图像到Skype的成功。

现在我想集成一个Dialog来处理带UI的摄像头选项。

在我的Filter.ax中调用函数QueryInterface(REFIID riid, void **ppv)

riid == IID_ISpecifyPropertyPages

我已经看到Dialog必须在其他DLL中,如Com?

我尝试直接打开Dialog,但没有Windows消息传入。

我还必须写一个MFC Dll,他们是从PropertyPage IIID开始的吗? My Propertypage是一个包含一些项目的大型MFC Controles TabControl。如果我从MFC测试应用程序启动过滤器,我可以看到它。 AfxInit我无法执行。 (错误的Lib版本我必须使用directshow基类(知识示例)

我现在不知道为什么我的Dialog没有消息,什么是正确的方式?

1 个答案:

答案 0 :(得分:0)

您不需要在单独的DLL中实现属性页(尽管可能)。

DirectShow过滤器属性页是使用ISpecifyPropertyPages实现的常规COM属性页。属性页是单独的COM对象,它们实现了众所周知的接口,如IPropertyPage

Windows SDK Ezrgb24 sample展示了如何实现简单的转换过滤器,还具有属性页(CEZrgb24Properties class)。对于过滤器的属性页面实现应该是一个良好的开端。

如果您更喜欢在单独的DLL中实现属性页,一种典型的方法是定义一个共享的COM接口,过滤器将实现它并通过其CLSID引用属性页,属性页将从中查询此接口过滤实例并将其用于配置操作。