HelloWorldBasic项目分析杂记

本文分析了Symbian操作系统中基于Nokia的AVKON框架的HelloWorld项目,详细解释了应用程序、DLL加载过程、两步构造机制,以及UI和文档类的创建。Symbian的UIKON层和AVKON框架为S60平台提供了用户界面支持,文章通过具体的代码示例探讨了应用启动顺序和关键组件的功能。
摘要由CSDN通过智能技术生成

Symbian是一个广泛运行于手机和移动设备上的操作系统,由于手机和PC不同,它没有统一的标准,其硬件配置及其所导致的用户界面都差异巨大(譬如有的手机有触笔而有的没有),Symbian提供基本服务和一套比较通用的UI层(UIKON),取得Symbian授权的手机厂家一般都会针对自己具体型号的手机设计自己的用户界面,比较著名的是Nokia的Series 60平台(用于Nokia 7650、Nokia N-Gage、Siemens SX1等)和Sony Ericssion的UIQ平台(UIQ平台本身是Symbian的原生UI,不过现在Symbian把它卖给了Sony Ericssion)。前者针对单手操作的按键式手机,没有触摸屏和手写笔,一般有一个4方向导航键,后者运行于有较大屏幕,带有触摸屏的手机。
 

一、模块分析

AVKON是Nokia在Symbian的UIKON UI层基础上开发出来的专用于S60的UI层,和MFC有点相似之处。HelloWorld项目是基于此框架开发的。

首先,每个编译出来的GUI应用程序(*.app)实际上是一种多态dll,不是一个通常意义上的类似于exe那样的可执行模块。当执行一个应用程序时,OS把app文件名作为参数传递给apprun.exe,由apprun.exe创建应用程序进程并把*.app加载到新创建的进程的地址空间,因此,每个app都导出了一个函数NewApplication(),它是用序号导出的。以Helloworld工程为例,察看目录%SDKROOT%/6.1/Series60/Epoc32/BUILD/SYMBIAN/6.1/SERIES60/SERIES60EX/HELLOWORLD/GROUP/HELLOWORLD/WINS下面的HELLOWORLD.def文件可以看出这一点。NewApplication的函数体在Helloworld.cpp文件中,它所做的工作很简单,仅仅是new一个CHelloWorldApplication对象然后返回其指针。在这个文件中还有另一个全局函数E32Dll,此函数意义等同于Windows中dll编程的DllMain函数,是DLL的Entry Point,在此可以进行初始化TLS(Thread Local Storage)的动作,每个Symbian程序都必须有这个函数。当应用程序准备运行的时候,E32Dll会最先被框架所调用,框架会传进来一个参数aReason,此参数有4种可能值:EDllProcessAttach, EDllThreadAttach, EDllThreadDetach or EDllProcessDetach,在这里直接返回KErrNone,表示没有错误。

接下来分析应用程序类CHelloWorldApplication。这个类按照官方文档的说法就是“An Application that creates the new blank document and d

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值