FMX:控件处理

use*_*896 5 delphi controls handle firemonkey

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

iVideoWindow.Put_Owner(Panel1.Handle); 
Run Code Online (Sandbox Code Playgroud)

我需要处理TPanel,以便在其上显示视频.但FMX控件无法处理.我知道,Firemonkey不是基于传统的Windows而且FMX不提供这个,但是如何解决这个问题呢?我不知道,请帮助我.

Ano*_*rog 5

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

WindowHandleToPlatform(form1.Handle).wnd
Run Code Online (Sandbox Code Playgroud)

将其放入您的uses条款中:

uses
  FMX.Platform.Win;
Run Code Online (Sandbox Code Playgroud)

请注意,仅调用WindowHandleToPlatform(form1.Handle)是行不通的,您必须访问其.Wnd属性才能获取 Win32 句柄。

由于这会降低应用程序的可移植性,因此在执行此操作时最好将{$IFDEF MSWINDOWS}代码放在一边,如果您移植到 MacOS,则必须为该平台编写单独的代码。或者,将此代码放入一个单独的单元中,该单元仅处理与 MSWindows 相关的内容,然后IFDEF将该单元放入您的uses.


Kro*_*ica 2

FmxHandleToHWND现在已标记为已弃用。

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