2009-09-03 46 views
0

我對DirectShow非常陌生,現在真的只是感覺我的方式。我想要在WPF應用程序中託管directshow圖形的directshow渲染器窗口,並且目前使用HwndHost類來嘗試實現此目的。我對HwndHost的需求是呈現視頻的窗口句柄。我找到了一個例子,它顯示了通過枚舉IVideoWindow接口的引腳並查詢IOverlay來獲取句柄,因此可以使用GetWindowHandle方法來獲取句柄。DirectShow.Net中提供IOverlay接口

問題是IOverlay似乎沒有在DirectShow.Net中可用。閱讀DirectShow.Net About頁面,IOverlay列在表中,標題爲「這些接口位於源代碼中,但已棄用,未公開,用於Ole自動化或以其他方式無法測試,這意味着它們不是,也不會是測試「

那麼,我必須做些什麼來獲得這個定義?它是否從作爲庫分發的構建中排除,因此我應該從源自己構建庫?

或者有沒有更好的方式做我想做的事情? Anyhelp將不勝感激,就像我說的我對所有這些東西都是新手。

在此先感謝。

編輯:並不是很多DirectShow的開發者?或者這是一個愚蠢的問題,絕對開放給任何意見窺視可能有...

回答

2

這樣做的正常方法是重新使用IVideoWindow :: put_Owner視頻窗口,使其成爲您自己的窗口的孩子。您還需要設置AutoShow(false),Visible,Width和Height屬性,並更改WindowStyle屬性以使其成爲子窗口。

IOverlay接口在DirectShow(1996)的第一個版本中實現,以支持一些自從不存在的硬件解碼器。我不認爲目前的視頻渲染器會支持它。

窗口句柄很難獲得,因爲糟糕的應用程序編程導致Windows視頻頻繁死鎖,開發人員認爲DirectShow線程和它們擁有的窗口以及任何應用程序線程之間需要明確分離。

G

+0

非常感謝你,只是我需要的人:)這恰好是使用你的GMFBridge工具包的一個項目的一部分(它非常有幫助) – 2009-09-03 11:26:21

相關問題