我在firemonkey中使用DirectShow,输出视频时遇到问题。
iVideoWindow.Put_Owner(Panel1.Handle);
我需要处理TPanel,以便在其上显示视频。但FMX控件无法处理。我知道,Firemonkey不是基于传统的Windows而且FMX不提供这个,但是如何解决这个问题呢?我不知道,请帮助我。
答案 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;