delphi FMX:控件句柄

gjmwrych  于 2022-11-23  发布在  其他
关注(0)|答案(4)|浏览(383)

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

iVideoWindow.Put_Owner(Panel1.Handle);

我需要一个TPanel的句柄,来显示视频。但是FMX控件没有句柄。我知道,Firemonkey不是基于传统的windows,FMX也没有提供这个,但是如何解决这个问题呢?我不知道,请帮帮我。

kb5ga3dv

kb5ga3dv1#

如果要获取HWND(Win32 API)类型的窗口句柄,现在可以调用此函数:

WindowHandleToPlatform(form1.Handle).wnd

将以下内容放入uses子句中:

uses
  FMX.Platform.Win;

请注意,只呼叫WindowHandleToPlatform(form1.Handle)是无法运作的,您必须存取其.Wnd属性以取得Win32控制代码。
由于这会降低应用程序的可移植性,因此在代码中添加{$IFDEF MSWINDOWS}也是一个好主意,如果你移植到MacOS,你就必须为该平台编写单独的代码。或者,将这些代码放到一个单独的单元中,只处理与MSWindows相关的内容,然后将IFDEF放到你的uses中。

des4xlb0

des4xlb02#

FmxHandleToHWND现在标记为已过时。
WindowHandleToPlatform会将给定的FireMonkey句柄转换为与平台相关的窗口句柄(在您的情况下为Windows句柄)。

9lowa7mx

9lowa7mx3#

使用Timage控件,然后您可以将输出分配给Image1.Bitmap.Handle。它是FMX下唯一提供窗口句柄的组件

yqyhoc1h

yqyhoc1h4#

要获取面板的句柄,请尝试以下操作:

uses 
  FMX.Platform.Win;

var
  Handle : HWND;

begin

  Handle := TWinWindowHandle (Panel1).Wnd;

end;

相关问题