Symbian S60 基本程序的框架
2010-05-31 20:02:00 来源:WEB开发网本文主要介绍了Sybmian S60基本程序的框架,这里详细阐述了当程序运行时,发生在各对象之间的交互顺序。
下面就来剖析一个典型的hello world框架。
1.下图显示了一个标准应用程序所使用的类的家族图
2.这里详细阐述了当程序运行以及用户选择菜单选项时,发生在各对象之间的交互顺序。下面做成了一个图,按顺序进行了逐一的阐释。
3.下面就图上标注的消息来一一说明:
1、应用程序启动,框架装入应用程序DLL,E32Dll method被调用。
2-3、框架调用函数NewApplication,这里生成了一个HelloWorldBasicApplication类的实例,并返回一个指向它的指针。接下来框架会使用这个指针来完成程序的构造。
4、框架调用AppDllUid以获得实际程序的UID,这个UID做什么用的那,例如,如果一个程序正在运行,而要启动这个程序的另一个实例,这时该运行的程序就会被切换到前台,而不是重新生成一个。
5- 8、框架在调用CHelloWorldBasicApplication对象的CreateDocumentL函数,这就生成了一个应用程序文档并返回一个指向它的指针。从而使得框架可以直接调用Document的某些功能。而文档对象也通过调用自己的静态函数NewL获得创建。
9、框架调用AppDllUid,来观察是否要从文件系统中装入一个文件。这里的示例不需要永久存储某些信息,因此不需要与之相关的东西。
10-11、框架调用文档对象的CreateAppUi方法,从而生成了一个App UI对象并返回一个指向它的指针。
12、框架通过调用App UI对象的ContructL函数来完成其构造,事实上在这里完成了App UI想做的所有初始化。
13、ContructL函数首先调用的是App UI基类的BaseContructL函数,这里处理了一些相关事宜,如读入一个与该程序相关的资源文件。
14-16、AppUi调用了AppView类的NewL函数来生成其实例,这里也是用的双重构造。
17、框架调用了Draw函数,怎么调用的还不是因为它从Application->Document->Ui->View不管是直接拥有还是间接拥有,framework到现在都有了无限的调度权利,呵呵。这样调用Draw后就绘制了view。
18-20、无论用户何时选择一个菜单选项,HandleCommandL都被框架所调用,并传递一个参数aCommand,它指明了用户所选择的命令。在这里示例中App UI生成了一个Information note,并显示了它。
4.总结
本章节所介绍的carbide c++的基本结构,我们在设计程序之前必须对它的框架有更清晰的了解,各类之间的关系也需更明确的理解,这需要我们多读代码以熟悉框架。
更多精彩
赞助商链接