5

我正在使用 Firemonkey 中的 DirectShow,但在输出视频时遇到问题。

iVideoWindow.Put_Owner(Panel1.Handle); 

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

4

3 回答 3

4

如果你想获得一个 HWND (windows api) 类型的窗口句柄,你现在可以调用这个函数:

WindowHandleToPlatform(form1.Handle).wnd

放入您的用途部分:

uses
  FMX.Platform.Win;

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

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

于 2017-07-18T10:15:44.407 回答
2

FmxHandleToHWND现在标记为已弃用。

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

于 2014-05-28T06:58:09.737 回答
-1

要处理面板,请尝试以下操作:

uses 
  FMX.Platform.Win;

var
  Handle : HWND;

begin

  Handle := TWinWindowHandle (Panel1).Wnd;

end;
于 2017-11-14T12:29:20.783 回答