本文以Borland公司的Delphi 7产品为基础,介绍Delphi7 VCL 类结构代码,对其中每一个类中的方法代码作逐条的分析与解释,以求能真正理解VCL。
我知道,这是一项庞大、长久、艰苦的工作,但是不这样做不行。我用了好多年的Delphi,用它的VCL组件,我早就发现,如果不做这项工作,我将永远无法深入理解Delphi,事实的确如此。
之所以选中Delphi7,主要考虑到几个原因
1〉她是Delphi产品中编写Win32原生代码的最后一个版本(以后都是.Net了)
2〉这个版本的参考资料比较多
3〉该版本使用的人多,性能稳定性好
好了,不说废话,我们开始进入正题
我们今天研究VCL的对象之王(也是所有对象的根类)——TObject类中的代码,下面是该类的声明:
- TObject = class
- constructor Create;
- procedure Free;
- class function InitInstance(Instance: Pointer): TObject;
- procedure CleanupInstance;
- function ClassType: TClass;
- class function ClassName: ShortString;
- class function ClassNameIs(const Name: string): Boolean;
- class function ClassParent: TClass;
- class function ClassInfo: Pointer;
- class function InstanceSize: Longint;
- class function InheritsFrom(AClass: TClass): Boolean;
- class function MethodAddress(const Name: ShortString): Pointer;
- class function MethodName(Address: Pointer): ShortString;
- function FieldAddress(const Name: ShortString): Pointer;
- function GetInterface(const IID: TGUID; out Obj): Boolean;
- class function GetInterfaceEntry(const IID: TGUID): PInterfaceEntry;
- class function GetInterfaceTable: PInterfaceTable;
- function SafeCallException(ExceptObject: TObject; ExceptAddr: Pointer): HResult; virtual;
- procedure AfterConstruction; virtual;
- procedure BeforeDestruction; virtual;
- procedure Dispatch(var Message); virtual;
- procedure DefaultHandler(var Message); virtual;
- class function NewInstance: TObject; virtual;
- procedure FreeInstance; virtual;
- destructor Destroy; virtual;
- end;