为什么消息的返回值赋值要在INHERITED后赋值才起作用 ( 积分: 50 )

  • 主题发起人 主题发起人 tanbo23456
  • 开始时间 开始时间
T

tanbo23456

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.Wmtanbo(var Msg: TMessage);
begin
ShowMessage(IntToStr(Msg.Result));//这里显示为0
inherited;
Msg.Result := 4;
ShowMessage(IntToStr(Msg.Result));//这样显示的结果为4
end;
如果我将inherited;和Msg.Result := 4;调换位置,则俩个都显示为0,书上没说明白,希望大虾给我解释下
 
因为Inherited;就是调用父类中处理该消息的procedure来处理该消息,如果父类中没有处理该消息,则继续查找父类的父类直到TObject
你这样就说明TForm1的继承链中至少有一个类处理了该消息,并把Msg.Result 设为了0
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
631
import
I
后退
顶部