2013-03-23 152 views
3

我正在使用Firemonkey中的DirectShow,並且輸出視頻時出現問題。FMX:控件句柄

iVideoWindow.Put_Owner(Panel1.Handle); 

我需要TPanel的句柄來顯示它的視頻。但FMX控件沒有處理。我知道,Firemonkey不是基於傳統的窗口,FMX不提供這個功能,但是如何解決這個問題?我不知道,請幫助我。

+5

我說,你是出於運氣。雖然,你可以通過用'FmxHandleToHWND'函數轉換窗體的'Handle'來使用一個窗體作爲'IVideoWindow.Owner'的目標,或者看看播放視頻文件的其他方法,例如at ['如何在Firemonkey中播放視頻文件](http://stackoverflow.com/q/8130097/960757)。 – TLama 2013-03-23 19:02:27

回答

1

FmxHandleToHWND現在已被棄用。

WindowHandleToPlatform會將給定的FireMonkey句柄轉換爲其依賴於平臺的窗口句柄(在你的情況下是一個Windows句柄)。

1

如果你想獲得一個窗口句柄作爲HWND(Windows API的)類型,現在就可以調用這個函數:

WindowHandleToPlatform(form1.Handle).wnd 

把你的用途部分:

uses 
    FMX.Platform.Win; 

注意只需撥打WindowHandleToPlatform(form1.Handle)將無法​​正常工作,您必須訪問.wnd以獲取winapi句柄。

由於這會使應用程序的可移植性降低,因此每次執行此操作時都要放置{$ IFDEF MSWINDOWS},如果您曾經移植到MacOS,則必須爲該平臺編寫代碼。或者將這些代碼放入一個單獨的單元中,該單元僅處理MS Windows相關代碼,並將該單元用於您的使用。

-1

要獲得面板的手柄,試試這個:

uses 
    FMX.Platform.Win; 

var 
    Handle : HWND; 

begin 

    Handle := TWinWindowHandle (Panel1).Wnd; 

end;