【Delphi】中使用消息Messages(二)

使用跨平台的消息机制(RTL Cross-Platform Messaging Solution):

 

目录

使用跨平台的消息机制(RTL Cross-Platform Messaging Solution):

发送和接收消息原理步骤:

FireMonkey支持RTL系统消息说明:

VCL支持RTL系统消息说明:


RTL提供了跨平台的消息处理机制(方案),在System.Messageing单元中实现,程序中如果需要使用,就要引用这个单元:

uses
   System.Messageing;

发送和接收消息原理步骤:

RTL跨平台消息机制依赖于System.Messageing单元中的TMessageManager对象。

  1. 希望接收特定类型消息的组件在消息管理器上订阅目标消息类型(TMessageManager.SubscribeToMessage)。
  2. 组件向消息管理器发送消息,消息管理器将这些消息转发给订阅了所接收消息类型的组件(TMessageManager.SendMessage)。

关于TMessageManager的详细使用步骤,参见:【Delphi】中使用消息Messages(三)

注意:Delphi框架RTL消息机制同时支持FireMonkeyVCL

FireMonkey支持RTL系统消息说明:

FireMonkey提供了一个平台服务IFMXApplicationService,它提供了对事件通知的跨平台访问,因此不需要在应用程序针对的每个平台上使用不同的、特定于平台的事件系统。当IFMXApplicationService从操作系统接收到事件通知时,它会生成一个消息对象(TMessage或其子对象之一)来提供事件数据。message对象包含有关所发生事件的只读信息。消息对象的类型指示发生的事件的类型。

FireMonkey组件也依赖RTL消息相互通信。

FireMonkey组件将消息发送到默认的消息管理器。有关FireMonkey系统消息类型的列表如下:

所谓系统消息可以是从平台系统消息翻译过来的,也可以是由FireMonkey框架实现的。除了这些系统消息,我们当然可以定义我们自己的消息。

VCL支持RTL系统消息说明:

VCL框架不使用RTL跨平台消息传递解决方案;相反,它使用Windows API消息传递解决方案。这意味着VCL不会将Windows消息转换为RTL消息,VCL组件也会使用Windows API相互通信。

重点:

只有在不需要从Windows或VCL组件捕获消息时,才能在项目中使用RTL消息。例如,您可以使用RTL消息来处理多线程应用程序中的线程,或者编写只发送和接收彼此消息的组件。

如果需要访问来自Windows或VCL组件的消息,必须执行以下操作之一:

  • 使用Windows API消息传递解决方案。
  • 将项目移植到FireMonkey。FireMonkey已经将系统消息转换为RTL消息,FireMonkey组件也使用RTL消息。
  • 编写自己的翻译层,将Windows API消息映射到RTL消息。

下一节:​​​​​​​【Delphi】中使用消息Messages(三)​​​​​​​​​​​​​​

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海纳老吴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值