2011-06-02 68 views
1

我写了一个Directshow过滤器,它从CTransInPlace派生并实现了一个属性页面。将数据从属性页面传递到过滤器并将数据从过滤器拖到属性页面效果很好(使用定义的接口),但我想从过滤器发送通知到属性页面以表示发生了某些事情(在此处情况下,在均衡器中发生削波)。从DirectShow过滤器发送消息到属性页

我在这方面遇到了麻烦,因为我没有从过滤器中引用属性页面,属性页面由GraphEdit实例化。

什么是最好的方式发送某种类型的消息或通知到属性页?

回答

0

您可以在过滤器中实现回调函数。看看samplegrabber过滤器。有一个相似的情况:

samplegrabber过滤器实现ISampleGrabber Interface其中包括SetCallback函数。需要接收回调的类需要执行ISampleGrabberCB Interface。当调用SetCallback时,你传递一个指向ISampleGrabberCB接口的指针。现在samplegrabber过滤器可以在该接口中调用一个函数(BufferCB或SampleCB)。

+0

谢谢,这可能是一个更好的方式来做到这一点,然后我结束了。我添加了一个setter到过滤器实现的接口。这会设置一个指向属性页面的指针,并允许过滤器调用其中一个属性页面的公共方法。 – Chris 2011-06-03 16:31:05