就是公用体,公用的意思就是0,1,2中的所有参数共用一段内存
建议结合C++的Union学习,也可以参考以前的老帖子
以下为摘录的一段:
plane822 (2003-04-11 13:08:00)
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;
请给解释一下各个参数的用法,特别是CASE INTEGER 那一句根本就一点都不理解,劳驾
NeutronDelphi (2003-04-15 8:59:00)
结构体你应该知道吧,共用体是一个特殊的结构体,形式上由多个结构体组成,
我说详细一点吧,
比如说你定义一个变量Msg:TMessage;
假定系统分配的内存为 1234
即
Msg=1234(@符号为取地址)
但Msg占用96个字节也就是说Msg位于1234-1330(即1234+96);
那么Msg的第一个变量为整个变量的首地址即Msg.WParam 或Msg.WParamLo的地址为
1234,但他们的长度不同,Msg.LParam为1234-1266, Msg.WParamHi 为1234-1250,
同样的道理 Msg.WParam为1267-1299,Msg.WParamLo为1250-1266
也就是说Hi(Msg.WParam)=Msg.WParamHi;
总而言之,case Integer of 是定义共用体,
共用体就是几个结构体共同占用同一段内存,既然是同一段内存,那么结构体的内容是一样的,
只是访问的方式不同而已.比如十六进制 $5328 访问高8位得到$53,访问低8位得到$28.
你要是还不懂就看看C,Pascal语言的共用体的书吧 .