2011-06-02 65 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