请DFW高手指点迷津,谢谢!(20分)

  • 主题发起人 主题发起人 netxeyes
  • 开始时间 开始时间
N

netxeyes

Unregistered / Unconfirmed
GUEST, unregistred user!
DFW高手:我在分析VCL的源代码的时候遇到一个问题:如下
在BCB里面是:
struct TMessage
{
unsigned Msg;
union
{
struct
{
Word WParamLo;
Word WParamHi;
Word LParamLo;
Word LParamHi;
Word ResultLo;
Word ResultHi;

};
struct
{
int WParam;
int LParam;
int Result;

};

};
} ;

在Delphi里面是:
PMessage = ^TMessage;
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 of 为什么要这样写,难道 integer 还会分别可能等于0和1
请DFW高手指点迷津,谢谢!

 
这种写法相当于c语言的联合(unit)
 
后退
顶部