我正在使用 Firemonkey 中的 DirectShow,但在输出视频时遇到问题。
iVideoWindow.Put_Owner(Panel1.Handle);
我需要 TPanel 的句柄,以在其上显示视频。但是 FMX 控件没有句柄。我知道,Firemonkey不是基于传统windows的,FMX不提供这个,但是如何解决这个问题呢?我不知道,请帮帮我。
我正在使用 Firemonkey 中的 DirectShow,但在输出视频时遇到问题。
iVideoWindow.Put_Owner(Panel1.Handle);
我需要 TPanel 的句柄,以在其上显示视频。但是 FMX 控件没有句柄。我知道,Firemonkey不是基于传统windows的,FMX不提供这个,但是如何解决这个问题呢?我不知道,请帮帮我。
如果你想获得一个 HWND (windows api) 类型的窗口句柄,你现在可以调用这个函数:
WindowHandleToPlatform(form1.Handle).wnd
放入您的用途部分:
uses
FMX.Platform.Win;
请注意,仅调用WindowHandleToPlatform(form1.Handle)将不起作用,您必须访问.wnd才能获取 winapi 句柄。
由于这会降低应用程序的可移植性,因此在执行此操作时放置 {$IFDEF MSWINDOWS} 也是一个好主意,如果您曾经移植到 MacOS,则必须为该平台编写代码。或者将此代码放入仅处理 MS Windows 相关代码的单独单元中,并将 IFDEF 单元放入您的使用中。
FmxHandleToHWND
现在标记为已弃用。
WindowHandleToPlatform
将给定的 FireMonkey 句柄转换为其平台相关的窗口句柄(在您的情况下为 Windows 句柄)。
要处理面板,请尝试以下操作:
uses
FMX.Platform.Win;
var
Handle : HWND;
begin
Handle := TWinWindowHandle (Panel1).Wnd;
end;