FMX:控件处理

时间:2013-03-23 18:51:00

标签: delphi controls handle firemonkey

我在firemonkey中使用DirectShow,输出视频时遇到问题。

iVideoWindow.Put_Owner(Panel1.Handle); 

我需要处理TPanel,以便在其上显示视频。但FMX控件无法处理。我知道,Firemonkey不是基于传统的Windows而且FMX不提供这个,但是如何解决这个问题呢?我不知道,请帮助我。

3 个答案:

答案 0 :(得分:3)

如果你想把窗口句柄作为HWND(windows api)类型,你现在可以调用这个函数:

WindowHandleToPlatform(form1.Handle).wnd

放入您的使用部分:

uses
  FMX.Platform.Win;

请注意,只是调用 WindowHandleToPlatform(form1.Handle)不起作用,您必须访问 .wnd 才能获取winapi句柄。

由于这会降低应用程序的可移植性,因此在执行此操作时放置{$ IFDEF MSWINDOWS}也是一个好主意,如果您曾经移植到MacOS,则必须为该平台编写代码。或者将此代码放入一个单独的单元中,该单元仅处理与MS Windows相关的代码,并将IFDEF单元用于您的使用。

答案 1 :(得分:2)

FmxHandleToHWND现已标记为已弃用。

WindowHandleToPlatform会将给定的FireMonkey句柄转换为其平台相关的窗口句柄(在您的情况下为Windows句柄)。

答案 2 :(得分:-1)

要获得面板的处理,请尝试以下方法:

uses 
  FMX.Platform.Win;

var
  Handle : HWND;

begin

  Handle := TWinWindowHandle (Panel1).Wnd;

end;