我正在使用Firemonkey中的DirectShow,並且輸出視頻時出現問題。FMX:控件句柄
iVideoWindow.Put_Owner(Panel1.Handle);
我需要TPanel的句柄來顯示它的視頻。但FMX控件沒有處理。我知道,Firemonkey不是基於傳統的窗口,FMX不提供這個功能,但是如何解決這個問題?我不知道,請幫助我。
我正在使用Firemonkey中的DirectShow,並且輸出視頻時出現問題。FMX:控件句柄
iVideoWindow.Put_Owner(Panel1.Handle);
我需要TPanel的句柄來顯示它的視頻。但FMX控件沒有處理。我知道,Firemonkey不是基於傳統的窗口,FMX不提供這個功能,但是如何解決這個問題?我不知道,請幫助我。
FmxHandleToHWND
現在已被棄用。
WindowHandleToPlatform
會將給定的FireMonkey句柄轉換爲其依賴於平臺的窗口句柄(在你的情況下是一個Windows句柄)。
如果你想獲得一個窗口句柄作爲HWND(Windows API的)類型,現在就可以調用這個函數:
WindowHandleToPlatform(form1.Handle).wnd
把你的用途部分:
uses
FMX.Platform.Win;
注意只需撥打WindowHandleToPlatform(form1.Handle)將無法正常工作,您必須訪問.wnd以獲取winapi句柄。
由於這會使應用程序的可移植性降低,因此每次執行此操作時都要放置{$ IFDEF MSWINDOWS},如果您曾經移植到MacOS,則必須爲該平臺編寫代碼。或者將這些代碼放入一個單獨的單元中,該單元僅處理MS Windows相關代碼,並將該單元用於您的使用。
要獲得面板的手柄,試試這個:
uses
FMX.Platform.Win;
var
Handle : HWND;
begin
Handle := TWinWindowHandle (Panel1).Wnd;
end;
我說,你是出於運氣。雖然,你可以通過用'FmxHandleToHWND'函數轉換窗體的'Handle'來使用一個窗體作爲'IVideoWindow.Owner'的目標,或者看看播放視頻文件的其他方法,例如at ['如何在Firemonkey中播放視頻文件](http://stackoverflow.com/q/8130097/960757)。 – TLama 2013-03-23 19:02:27