Welcome

首页 / 软件开发 / Delphi / Delphi中的消息处理

Delphi中的消息处理2010-01-271、windows的消息驱动体系

在windows系统中,消息传递是实现对乡间通信和控制的主要手段。可以额系统都以消息驱动的方式工作。系统中发生的用户输入操作、显示信息的改变、系统环境参数变化等所有时间都以系统定义消息的形式出现在相关的应用程序和窗口。所以程序设计的主要任务就是为这些消息的处理设计代码。

在应用程序中,发送者可以通过发送消息要求接收者完成相应的处理。当程序运行时,windows系统为每个应用程序实例建立一个消息队列,一次保存发送给该程序实例的消息,在应用程序的主控部分,需要设置一个消息循环,利用一组系统函数从该程序实例的消息队列中依次读取和分析消息,并将他们发送给指定的消息。这种消息传递可以使用系统定义消息,也可以使用用户自定义的消息。现有的多种可视化开发环境,都已经将这一过程封装到了各种类,部件,以及部件的方法中。

当我们利用它们写一个应用程序时,必须考虑每个对象要做什么,将他们分解为不同的消息处理函数,并且对应不同的消息。虽然有的控件(部件)种类繁多,编写程序非常便利。但这些毕竟是一些通用的对象和消息处理函数,如果我们要编写自己的部件或者想要更加灵活的运用现有控件就必须深刻了解消息驱动体系以及消息的映射,消息处理函数编写和系统有关消息操作的函数。

2、DELPHI开发环境:

DELPHI已成为日益普及的优秀的32位WINDOWS开发环境,其中一个最大的特点就是在DELPHI 中可自定义消息写自己的构件(Cmponent)的,因为编写构件一般要对相应的消息进行处理.。

3、DELPHI中的消息:

在Delphi 中所有的类都有一个内建的用于处理消息、调用消息处理过程的机制。VCL定义了发送所有WINDOWS消息(包括自定义消息)的消息派送系统,你只需要建立消息处理方法。一个Windows 消息是一个包含多个字段的数据记录。其中最重要的是消息标识,在WINDOWS中已经定义了许多消息其他有用的字段是两个参数和一个结果字段。一个16位和一个32位参数wparan录数据类型:

type
TMessage = packed record
Msg: Cardinal;
case Integer of
0: (
WParam: Longint;
LParam: Longint;
Result: Longint);
1: (
WParamLo: Word;
WParamHi: Word;
LParamLo: Word;
LParamHi: Word;
esultLo: Word;
ResultHi: Word);
end;