关于消息标识与消息变量(100分)

  • 主题发起人 主题发起人 tony wong
  • 开始时间 开始时间
T

tony wong

Unregistered / Unconfirmed
GUEST, unregistred user!
最近学"消息",见通常消息标识与消息变量是"一致的"(我的话),如下就不"一致",
例:TWMSIZE变量与WM_PAINT消息标识,下面程序就这样,已获通过.本人百思不得其解,
还望大虾出手指点!(100分)
private
procedure WMSize(var message: TWMSIZE); message WM_PAINT;

implementation
procedure Tform1.WMSize(var Message: TWMSize);
begin
inherited;
if Width>300 then Width:=300;
if Height>300 then Height:=300;
end;
 
消息标识是系统识别消息的唯一标识,没有它就系统就不知道是什么多消息了。
消息变量是消息的结构,也是一种记录结构的。
至于WMSize(var message: TWMSIZE)不同的问题其实没有必要深究,你将(var message: TWMSIZE)
改为(var message: TMSG)一样是可以的。在Delphi中的消息的定义中只是要求消息结构中的第一
个域一定要是MSG:Cardinal(就是消息标识),其他的就没有硬性约定了。
发送消息时你要将WM_PAINT赋值给TMSG的MSG,再发送TMSG结构的消息就可以了。
当程序检索消息时候它先检索消息的结构,再读出MSG的值,寻找登记了的消息方法,由方法去处理
就OK了。
TWMSIZE与TMSG或是其他结构的消息变量的差别其实也就是其中几个参数(这几个参数对于这种消息
处理有用,所以就专门定义一个结构来方便这种消息的处理)的差别而已,总的结构大同小异!
 
接受答案.后来,我又查了一下Packed Record(Pascal)和Union and Struct(c)的用处,
理解更透彻了
 
[red]有收获,祝贺啊![/red]
 
后退
顶部