Delphi FMX:控制手柄

Delphi FMX:控制手柄,delphi,controls,handle,firemonkey,Delphi,Controls,Handle,Firemonkey,我在firemonkey中使用DirectShow,在输出视频时遇到问题 iVideoWindow.Put_Owner(Panel1.Handle); 我需要TPanel的手柄来显示视频。但是FMX控制没有手柄。我知道,Firemonkey不是基于传统的windows和FMX不提供这一点,但如何解决这个问题呢?我不知道,请帮帮我。FmxHandleToHWND现在被标记为已弃用 WindowHandleToPlatform将给定的FireMonkey句柄转换为其平台相关的窗口句柄(在您的情况

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

iVideoWindow.Put_Owner(Panel1.Handle); 

我需要TPanel的手柄来显示视频。但是FMX控制没有手柄。我知道,Firemonkey不是基于传统的windows和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
函数转换表单的
handletohwnd
句柄来使用表单作为
ivideowner.Owner的目标,或者查看其他播放视频文件的方法,例如在。