鸿 网 互 联 www.68idc.cn

当前位置 : 服务器租用 > 编程语言开发 > delphi > >

Delphi中的消息

来源:互联网 作者:佚名 时间:2015-07-05 21:28
消息是Windows发出的一个通知,它告诉应用程序某个事件发生了。在Delphi中,大多数情况下Windows的消息被封装在VCL的事件中,我们只需处理相应的VCL事件就可以了,但如果我们需要编写自己的控件、截获或过滤消息就必须深入研究Win32的消息处理机制。 在Delph

  消息是Windows发出的一个通知,它告诉应用程序某个事件发生了。在Delphi中,大多数情况下Windows的消息被封装在VCL的事件中,我们只需处理相应的VCL事件就可以了,但如果我们需要编写自己的控件、截获或过滤消息就必须深入研究Win32的消息处理机制。

  在Delphi中消息以TMessage记录的方式定义。打开Message.pas文件,我们可以看到Tmessage是这样定义的:

  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;

  ResultLo: Word;

  ResultHi: Word);

  end;

  其中,Msg是区别于其他消息的常量值,这些常量值可以是Windows单元中预定义的常量,也可以是用户自己定义的常量。Wparam通常是一个与消息有关的常量值,也可以是窗口或控件的句柄。LParam通常是一个指向内存中数据的指针。

  Result是消息处理的返回值。Wparam、Lparam和Result都是32位的,如果想其中的低16位或高16位可以分别使用WparamLo、WparamHi、 LParamLo、LparamHi、ResultLo和ResultHi。

  在Delphi中除了通用的Tmessage外,还为每个Windows定义了一个特殊的消息记录。我们可以浏览Message.pas文件,下面是键盘的消息记录:

  TWMKey = packed record

  Msg: Cardinal;

  CharCode: Word;

  Unused: Word;

  KeyData: Longint;

  Result: Longint;

  与键盘相关的消息如:WM_KEYDOWN、 WM_KEYUP、 WM_CHAR、 WM_SYSKEYDOWN WM_SYSKEYUP、 WM_SYSCHAR的记录也被定义为TWMkey。在Message.pas文件中有以下声明:

  TWMChar=TWMkey; TWMKeyDown=

  TWMkey;TWMKeyUp=TWMkey; TWMSys

  -KeyDown=TWMkey; TWMSysKeyUp=

  TWMkey;TWMSysChar=TWMkey;

  首页12 尾页

网友评论
<