本文主要是介绍delphi VCL研究之消息分发机制-delphi高手突破读书笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1.VCL 概貌
先看一下VCL类图的主要分支,如图4.1所示。
在图中可以看到,TObject是VCL的祖先类,这也是Object Pascal语言所规定的。但实际上,TObject以及TObject声明所在的system.pas整个单元,包括在“编译器魔法”话题中提到的_ClassCreate等函数,都是编译器内置支持的。因此,无法修改、删除system.pas中的任何东西,也无法将system.pas加入你的project,否则会得到“Identifier redeclared ‘system’”的错误提示,因project中已经被编译器自动包含了system单元。
意思是,TObject是Object Pascal语言/编译器本身的一个性质!
TObject封装了Object Pascal类/对象的最基本行为。
TPersistent派生自TObject,TPersistent使得自身及其派生类对象具有自我保存、持久存在的能力。
TComponent派生自TPersistent,这条分支之下所有的类都可以被称为“组件”。组件的一般特性是:
(1)可出现在开发环境的“组件板”上。
(2)能够拥有和管理其他组件。
(3)能够存取自身(这是因为TComponent派生自TPersistent)。
TControl派生自TComponent,其分支之下所有的类,都是在运行时可见的组件。
TWinControl派生自TControl,这个分支封装了Windows系统的屏幕对象,也就是一个真正的Windows窗口(拥有窗口句柄)。
TCustomControl派生自TwinControl。从TCustomControl开始,组件拥有了Canvas(画布)属性。
图4.1 VCL类图主要分支(深色表示核心分支)
2.TObject与消息分发
首先来看一下TObject这个“万物之源”究竟长得何等模样。它的声明如下:
TObject = classconstructor Create;procedure Free;class function InitInstance(Instance: Pointer): TObject;procedure CleanupIn
这篇关于delphi VCL研究之消息分发机制-delphi高手突破读书笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!