熬之滴水穿石: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程序员的比的。
(未完待续......)
对于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程序员的比的。
(未完待续......)
相关文章推荐
- 熬之滴水穿石:Delphi曾经的利器(1)
- 熬之滴水穿石:Delphi曾经的利器(3)
- 熬之滴水穿石:Delphi曾经的利器(9)
- 方法代码熬之滴水穿石:Delphi曾经的利器(3)
- 消息方法熬之滴水穿石:Delphi曾经的利器(5)
- 对象控件熬之滴水穿石:Delphi曾经的利器(4)
- 熬之滴水穿石:Delphi曾经的利器(4)
- 熬之滴水穿石:Delphi曾经的利器(7)
- 熬之滴水穿石:Delphi曾经的利器(8)
- 熬之滴水穿石:Delphi曾经的利器(5)
- 熬之滴水穿石:Delphi曾经的利器(2)
- 机制方法熬之滴水穿石:Delphi曾经的利器(8)
- Delphi曾经的辉煌与Visual Studio 2005中的Delphi精神不死
- 曾经用Delphi写的一个上位机
- Delphi开发者快速解决问题的两大网络利器
- app开发利器 delphi xe
- 又在怀旧了,念起那个曾经被delphi把玩的我
- WebXone V2.3.0.2发布! DELPHI编写网络应用程序的利器!
- delphi中显示中文版的打开窗口
- 在 Delphi 中调用 JavaScript(2)