helloworldbasic工程总结(上)
Symbian中的文件类别:
.h c++的头文件
.inL c++内联函数实现文件
.cpp c++源文件
.mmp symbian 操作系统工程文件
.hrh 资源与C++程序的通用头文件
bld.inf 编译的信息文件
.mak 构建文件
.rh 资源头文件
.rss 资源文件
.loc 本地化字符串头文件
.rsc 被编译的资源文件(不涉及具体语言)
.rXX 被编译的资源文件(XX为语言类别)
.bmp window位图文件
.mbm symbian系统的多位图文件
.aif symbian系统的应用程序信息文件
.app symbian系统的执行文件,多态的DLL
.dll 共享DLL库
.exe symbian系统服务或可执行程序
资源文件说明:
.所有的资源结构必须使用#includes来包括
.使用唯一的名称验证(最大长度为四个字节)
.放置枚举值到.hrh中和放置资源结构体到.rh文件中
.书写资源文件名称时为小写;资源编译器产生大写字符来验证c++程序
.不要把字符串放置在资源文件中,使用逻辑名在资源文件中,并将真实的字符串放置在.loc文件中。头文件不要与资源文件同名。
.如果你使用一个TBUFnn变量,如TBUF80或TBUF64,并且你应该装载字符串到一个本地的TBuf<nn>变量中,要确保nn的类型相同。以阻止内存泄露。最好的方法是使用每个TBUF和StringLoader::Load或是iEikonEnv->AllocReadResourceL方法。
通用头文件说明:
.通用头文件必须使用c++和资源文件语法
.一般只用到控件的IDs,定义和枚举的放置
.资源IDs将被自动收集到filename.rsg,并且一定不要定义在.hrh中
.资源结构体定义必须在.rh文件中,他们不需要c++语法和不能用编译器编译
new(ELeave)说明:
用new(ELeave)来取代C++中的new,目的是在symbian的异常处理机制中,如果创建对象时异常退出,为了保证类中的自动变量释放,需要调用User::Leave()函数或是L函数来清理。所以需要使用new(ELeave)来取代new。
coemain.h文件说明:
在symbian系统中,coemain.h定义了Uikon core的类。
SystemGc函数说明:
获取系统的绘图上下文,该绘图上下文一般被用在绘制控件上,但是如果调用了CreateGcL()函数那么就会创建一个可选的绘图上下文。
HelloWorldBasic工程的研究总结:
在一个Symbian系统的程序中,E32Dll就是程序的入口函数,该函数也是DLL的入口函数。由于一般的Application类都继承于CApaApplication类,所以需要导出一个NewApplication()函数来供外部程序调用。一个应用程序就需要一个Uid来代表它的身份,因此在HelloworldbasicApplication.cpp定义了Application的Uid和获取Uid的函数。一般的应用程序由一个Application,一个Document,一个View和一个AppUi组成。
Application控制应用程序中全局资源的管理,并创建Document工作。
Document负责自身的管理和创建AppUi的工作。
AppUi负责自身的管理,还有一个HandleCommandL函数来处理用户交互的工作。
View负责应用程序的显示,和子控件的绘制工作,不负责与用户交互的操作工作。