目录
一、平台适用性:
| RTL(TMessageManager) | 所有平台都可以,包括:Windows、android、iOS、macos等 |
| Windows消息 | 只能使用在Windows平台,使用Winapi.Messages单元 |
| Dispatch消息 | 所有平台都可以,包括:Windows、android、iOS、macos等 |
二、使用灵活性:
| 消息类别 | 绑定窗口对象 | 绑定对象 | 支持广播 | 需要指针传递参数 |
| RTL(TMessageManager) | 不需要 | 不需要 | 是 | 不需要 |
| Windows消息 | 需要 | 需要 | 不支持 | 需要 |
| Dispatch消息 | 不需要 | 需要 | 不支持 | 不需要 |
三、引用单元:
| RTL(TMessageManager) | System.Messaging |
| Windows消息 | Winapi.Messages |
| Dispatch消息 | 无需引用专门单元 |
四、使用方式总结:
| RTL(TMessageManager) | //订阅消息 MessageManager.Unsubscribe(System.Messaging.TMessage<UnicodeString>, |
| Windows消息 | const //Winapi.Messages 中的消息响应事件 //发送消息 SendMessage或者PostMessage |
| Dispatch消息 | Self.Dispatch(Student2); //Self 表示某个对象 |
RTL(TMessageManager)是按照消息类别来进行消息订阅的,所以与对象无关,只要订阅了某个消息类别,如果有消息广播(发送),所有订阅者都会同时收到消息;windows消息是windows平台约定的,专门针对windows平台的。
根据以上的对比,使用建议:
除了必须在windows的窗体对象上需要使用消息而使用Windows消息机制外,其余都使用RTL(TMessageManager)消息机制。
五、下载:演示源代码
至此,关于Delphi的消息原理已经介绍完成,从下节开始,介绍Delphi开发android时候的系统消息处理。
下一节:【Delphi】中使用消息Messages(七)android 系统消息

本文对比分析了Delphi中RTL(TMessageManager)、Windows消息及Dispatch消息的不同特性,包括平台适用性、使用灵活性及实现方式,并给出了具体使用建议。
543

被折叠的 条评论
为什么被折叠?



