加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – Firemonkey – 消息处理

发布时间:2020-12-15 09:33:34 所属栏目:大数据 来源:网络整理
导读:我目前正在尝试开发一个基于Firemonkey的项目.我正在使用Firemonkey的UI功能,因为该项目由许多较小的应用程序组成,每个应用程序都有一个3D方面.我目前只使用FMX框架开发/部署到 Windows,但可能会在以后跨平台. 通过在后台构建VCL Windows应用程序来执行非常
我目前正在尝试开发一个基于Firemonkey的项目.我正在使用Firemonkey的UI功能,因为该项目由许多较小的应用程序组成,每个应用程序都有一个3D方面.我目前只使用FMX框架开发/部署到 Windows,但可能会在以后跨平台.

通过在后台构建VCL Windows应用程序来执行非常具体的操作,然后构建FMX前端,我遇到了大多数问题.但是,这仅适用于您只想执行应用程序以执行其设计的操作,因此可以使用参数执行应用程序.在其中一个应用程序中,我发现需要使用消息(或类似的东西).例如,在我的FMX应用程序中,如果我单击“button1”,我希望它向后台VCL应用程序发送消息以执行“action1”,而不是使用参数执行它.

一个很好的例子可能是在后台应用程序中使用VCL TMediaPlayer,前端FMX应用程序用于显示信息并提供播放,暂停等控制.这样它基本上就成为具有VCL功能的FMX UI.

到目前为止,我还没有找到任何关于消息的信息(例如在VCL中,用“SendMessage”或“PostMessage”或类似的东西完成)是通过Firemonkey处理的,可以通过本地帮助文件,也可以通过广泛的谷歌搜索.我发现的所有内容都与电子邮件有关(大概是因为我的大多数搜索术语中都有“消息”这个词).

任何人都可以指出我如何使用Firemonkey / FMX处理消息的正确方向?

问候,
斯科特普里查德

解决方法

我的理解是Firemonkey不是基于传统的窗口,因此向Firemonkey控件发送窗口消息通常不是一种选择.虽然有些控件确实使用了窗口(最明显的是TCommonCustomForm),但是你可以使用FMX.Platform.Win单元中的FmxHandleToHWND()函数在需要时从TFmxHandle中提取HWND.我不知道如何在FMX控件中接收和自定义处理窗口消息,如果可能的话.

Windows下的Firemonkey可以访问Win32 API,因此不应该阻止您将窗口消息发送到其他窗口控件,例如VCL UI.在您的uses子句中包含Winapi.Windows单元以访问Win32 API函数,就像在VCL应用程序中一样.

更新:因为FireMonkey不公开对发送到窗体窗口的消息的访问,所以您必须手动子窗口窗口才能在FireMonkey看到它们之前接收消息.您可以覆盖Form的CreateHandle()方法,首先调用继承的方法来创建窗口,然后使用FmxHandleToHWND()来获取可以子类化的HWND.一定要覆盖DestroyHandle()方法以删除子类,然后再调用inherited来释放HWND.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读