2013-03-23 80 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;