文件名称:理解消息处理系统-gb∕t 21050-2019 信息安全技术 网络交换机安全技术要求
文件大小:1.19MB
文件格式:PDF
更新时间:2024-06-29 06:59:44
Delphi 组件
7.1 理解消息处理系统 所有 VCL 类都有一个处理消息的内建机制,被称为消息处理方法,或者消息处理程序。 消息处理程序的基本思想是,类接收某种消息,并分发消息,然后根据接收到的消息调用一 套方法中的一个方法。如果对于某特定的消息不存在指定的方法,则使用缺省的处理程序。 下图显示消息分派系统: 可视组件库(VCL)定义了一个消息分派系统,它把指向特定类的全部 Windows 消息 (包括用户定义的消息)翻译为方法调用。你从不需要改变此消息分派机制。所有你需要做 的只是创建消息处理方法。对此主题的更多的内容,参见 7-7 页的“声明新的消息处理方法”。 7.1.1 Windows 消息中是什么? Windows 消息是一个数据记录,它包含几个域。其中最重要的是一个用于识别消息的整 数大小的值。Windows 定义了很多消息,并在 Messages 单元中为所有消息声明了标识符。 消息中其它的有用信息是二个参数域和一个结果域。 一个参数含有 16 位,另一个参数含有 32 位。你经常会看到把这二个值当作 wParam 和 lParam 的 Windows 代码,它们分别代表字参数和长整型参数。经常,每个参数包含多个信 息,你看到对名称的引用,比如 lParamHi,它代表在长整型参数中的高位字。 刚开始,Windows 程序员不得不记住或者在 Windows API 中查找每一个参数所包含的 信息。现在,微软给每一个参数命名。这个所谓的消息分离方法(message cracking)使得 理解伴随每一个消息的信息是什么变得更简单了。例如,对 WM_KEYDOWN 消息的参数, 现在被命名为 nVirtKey 和 lKeyData,它比 wParam 和 lParam 给出更多的细节信息。 为每一种类型的消息,Delphi 都定义了一个记录类型,它为每一个参数都提供一个助记 名。例如,鼠标消息在长整型参数中传递鼠标事件的 x 和 y 坐标,并且一个放在高位字中,