您的位置:首页 > 编程语言 > Delphi

熬之滴水穿石:Delphi曾经的利器(6)

2013-05-23 11:00 148 查看
10--贯穿始终的Application
对于TApplication,最初的印象莫过于在工程文件里,看到了Application.create类似的方法。当时并不在意,当对VCL开始了解时,发现这是一个设定并引导你的程序中的窗口非常重要的类。Application类其实也是从TComponent类继承袭来的,但它又不是一个控件,但它又潜移默化的管理着所有的控件。但我觉得Application实际上是管理的是窗口。该类里有FHandle参数,该参数就是一个窗口句柄。实际上在工程文件里,我们看到Application.createform的代码,这些代码是我们实际编写的窗口创建过程,其实在这些窗体之前,Application实际上已经建立了一个看不见的窗口,这个窗口会以一个消息循环接受消息和派发消息,来处理Application.createform中的那些窗体。Applcation实际上就是一个全局对象,这个工程生成exe程序时,其句柄就是存储在该Application的句柄中的。

Application的初始化的过程也比较复杂,在这里并不作详细的描述了。我只是像结合我们开发的方式,说说我对于这个Application的认识,它最主要的功能就是为窗口变成建立主窗体,这个窗体便是我们开发中的主窗体了。当调用Application.createform方法时,我们创建的form(窗口)实际上是从TForm类继承下来的派生类,我们追溯到上,form实际上是从TWinControl继承下来的,所以一切的方法都是从wincontrol的create方法开始的。在该方法中最为重要和核心的方法莫过于就是调用了classes.makeobjectinstanced的方法来创建窗口的回调了,当Application创建了主窗体之后,应用程序也就开始执行了。这时候触发窗体上的相关控件时,这些信息都会让窗口回调主窗体的MainWndProc的方法,该方法就是处理消息的一个函数。一个TCustomForm的类,其实该类下的Wndproc方法就是为Delphi的RAD量身定做的,并为这些对象维持运作的基本代码,这就是让Delphi程序员为什么是聪明的了,因为这些代码即便在什么代码都不写的情况下,也能生成代码并且自动处理消息了。所以VC窗口的程序员的烦恼,作为Delphi程序员是没有的,但是理解的深度,如果自己不深度挖掘肯定是没法与VC程序员的比的。
(未完待续......)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: