我已经编写了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没有消息,什么是正确的方式?
答案 0 :(得分:0)
您不需要在单独的DLL中实现属性页(尽管可能)。
DirectShow过滤器属性页是使用ISpecifyPropertyPages
实现的常规COM属性页。属性页是单独的COM对象,它们实现了众所周知的接口,如IPropertyPage
。
Windows SDK Ezrgb24 sample展示了如何实现简单的转换过滤器,还具有属性页(CEZrgb24Properties
class)。对于过滤器的属性页面实现应该是一个良好的开端。
如果您更喜欢在单独的DLL中实现属性页,一种典型的方法是定义一个共享的COM接口,过滤器将实现它并通过其CLSID引用属性页,属性页将从中查询此接口过滤实例并将其用于配置操作。