LDMC+S60移动应用开发讲义--Symbian+C++编程基础

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1移动应用开发移动应用开发----SymbianC++编程基础何何锐锐分布与移动计算实验室分布与移动计算实验室,,计算机学院计算机学院harry.he@buaa.edu.cnharry.he@buaa.edu.cn2分布与移动计算实验室本章内容本章内容™编程规范™Symbian工程文件™基本类型™异常处理™内存管理™描述符™动态数组™活动对象23分布与移动计算实验室编程规范编程规范4分布与移动计算实验室SymbianSymbian编码规范编码规范™目的ƒ便于阅读理解和维护ƒ便于检查,减少出错概率ƒ有助于交流ƒ维护SymbianC++编程习惯™基本准则ƒ遵循传统C++规范ƒ有具有自己特色™习惯决定成败35分布与移动计算实验室命名规范命名规范™通常ƒ类和函数的第一个字母大写ƒ所有单词连接在一起ƒ除了宏和资源标识之外,避免使用下划线_™例如voidTObject::PrepareForCommit();classCGlobalText;6分布与移动计算实验室命名规范命名规范™自动变量(局部变量)ƒ第一个字母小写ƒ需要时才声明自动变量(不要象C语言那样,在方法开头就声明所有变量)ƒ永远不要在同一行初始化多个变量™全局变量ƒ不鼓励使用全局变量ƒ大写字母开头ƒ非常量的全局数据在DLL中是不支持的;昀好使用线程本地存储(T.L.S.)47分布与移动计算实验室命名规范命名规范™宏ƒ所有字母大写ƒ用下划线分隔单词ƒIMPORT_C,EXPORT_C,_TEST_INVARIANT™指针和引用类型ƒ*或&放在类型旁边,而不是变量名旁边TText*data;voidTDemo::Append(constTDesC&aData);8分布与移动计算实验室命名规范命名规范™类名ƒ类名通常只能以C,R,T,M开头ƒ结构用T开头ƒ静态类没有前缀字母ƒ驱动类用D开头™例如ClassCBase;ClassTTypefaceInfo;ClassRFont;ClassMLaydoc;ClassUser;//静态类59分布与移动计算实验室命名规范命名规范™方法名ƒ通用规则有效ƒSetters通常是SetThing()ƒGetters通常是Thing(),(如果该方法返回数据项的话)VoidSetOffset(TIntaOffset)TIntOffset()const;TIntoffset=GetOffset();ƒ“Get”用于获取引用TCharFormatformat;GetCharFormat(format);10分布与移动计算实验室命名规范命名规范™方法名(续)ƒ以L结尾的方法表示可能Leaveƒ以C结尾的方法表示其中将数据项放入了cleanupstack中ƒ以D结尾的方法表示其中的对象将被销毁™例如CStoreMap*map=CStoreMap::NewLC();611分布与移动计算实验室命名规范命名规范™成员变量ƒ以i开头™例如classTObject{TTypeiType;TintiElemementOffset;TPtrCiComponentValue;}12分布与移动计算实验室命名规范命名规范™方法变量(形式参数)ƒ以a开头ƒ在元音前也不使用anƒ例如voidTObject::TObject(TTypeaType,TIntaElementOffset);ƒ昀好使用方法重载,而不是缺省参数,这样可读性好,并且更加高效713分布与移动计算实验室命名规范命名规范™常数ƒK开头ƒ单词开头大写ƒ例如constTIntKMaxNameLength=0x20;constTUidKEditableTextUid={268435548};14分布与移动计算实验室命名规范命名规范™枚举ƒ应当被包含在相应的类中ƒ不要全局命名空间ƒ必须用一个有意义并且无歧义的名字ƒT开头ƒ每个枚举成员E开头ƒ特定类中的常量可以实现成枚举型,这种情况下,可以使用K815分布与移动计算实验室命名规范命名规范™类命名ƒ程序设计中常用的四种类:•T-,C-,M-,R-ƒ类必须具有清晰的角色,而不是简单的方法与数据的集合™每个类一个头文件™头文件的布局#includefilesfriendclasses;public,protected,privatemethods;private,protected,publicdata;16分布与移动计算实验室QuestionsQuestions??917分布与移动计算实验室SymbianSymbian工程工程18分布与移动计算实验室主要文件主要文件制作安装文件用打包文件.pkg位图文件.mpm矢量图标文件.svg字符串文件.rls资源定义文件.rss资源头文件.rhr头文件.h源文件.cpp定义了项目的组成情况项目文件.mmp声明build的相关信息Build描述文件bld.infÎ到具体工程目录1019分布与移动计算实验室BuildBuild工程工程20分布与移动计算实验室bld.infbld.inf文件文件™Build信息文件ƒ被bldmake命令使用,以生成abld.bat及makefiles文件ƒprj_platformsƒprj_mmpfilesƒprj_exportsƒprj_testexports1121分布与移动计算实验室使用使用bldmakebldmake™bldmake为工程创建abldƒcd\myproject\groupƒbldmakebldfiles™使用abld创建组件或者工程文件ƒabldbuild或者ƒabldbuildwinsudeb22分布与移动计算实验室编译过程编译过程1223分布与移动计算实验室UIDsUIDs™每个应用程序都具有唯一的UIDs™UID是一个具有唯一性的32位数字™Symbian用UIDs(而不是扩展名)来标识不同的文件类型™在项目定义文件(.mmp)中指定UIDs24分布与移动计算实验室UIDsUIDs1325分布与移动计算实验室UID1UID1--文件类型指示器文件类型指示器™指定了文件的类型ƒ.EXE(UID1=KExecutableImageUid)•如果UID1为EXE,UID2和UID3则为零ƒ.DLL(UID1=KDynamicLibraryUid).dll/.appƒ存储文件或者其它格式的文件ƒ这些常数在e32uid.h中定义26分布与移动计算实验室UID2UID2--子类指示器子类指示器™UID2指明了不同类型的DLL或者数据文件™对于一个应用程序而言UID2可以三种之一ƒKUidAppƒKUidAppDllDocƒKuidAppInfoFile™UID2定义在APADEF.H和APGICHFL.H中1427分布与移动计算实验室UID3UID3--代码指示器代码指示器™应用程序DLL(.app)ƒ唯一性的标识应用程序™文档或数据文件ƒ将其关联到特定的执行文件和图标™对于EXE而言,不需要UID2或UID3™对于一个应用程序而言,其dll文件、文档以及AIF文件的UID3都是一样的。28分布与移动计算实验室UIDsUIDs的分配的分配™从Symbian开发者网络可以得到ƒ发送email到uid@symbian.comƒ指明需要的UIDs的个数ƒ指明应用程序或者项目名称™0x01000000到0x0FFFFFFF之间的UIDs用于实验™通常昀多能够申请10个UIDs,除非是获得了Symbian授权的公司。1529分布与移动计算实验室SymbianUIDSymbianUID分配分配Un-SymbianSignedUnprotectedProtectedPostSymbianOSv9ProtectedProtectedSymbianSignedPre-SymbianOSv9Application30分布与移动计算实验室SymbianUIDSymbianUID分配分配KNullUid0x000000000ProtectedRangeNotused-Includeslegacytestingrange0x0FFFFFFF0x000000010xFFFFFFFF0xEFFFFFFF0xDFFFFFFF0xAFFFFFFF0x9FFFFFFF0x7FFFFFFF0x6FFFFFFF0x2FFFFFFF0x1FFFFFFFReservedforfutureuse0x800000008to9UnprotectedRangeV9unprotectedUIDallocations0xA0000000AReservedforfutureuse0xB0000000BtoDNewV9testingrange0xE0000000ELegacyUIDcompatibilityrange0xF0000000FVendorIDsReservedforfutureuseV9protectedUID/SIDallocationsNotused-LegacyUIDallocationsPurpose0x700000000x300000000x200000000x10000000Range3to6127Class(es)UID1631分布与移动计算实验室mmpmmp文件文件™每个项目都具有一个项目定义文件,即mmp文件,™mmp文件包含了如下信息ƒ目标名称ƒ目标类型ƒUIDƒVID/SIDƒCapabilityƒ源文件目录ƒ源文件列表ƒ用户包含文件目录ƒ系统包含文件目录ƒ库文件ƒ调试库文件ƒ……32分布与移动计算实验室建立建立dlldll1733分布与移动计算实验室dlldll的的mmpmmp文件实例文件实例UID2指明了静态接口DLLDll指明了UID1的值34分布与移动计算实验室BuildBuild一个一个程序程序1835分布与移动计算实验室GUIGUI资源文件资源文件™资源文件描述了如菜单、对话框、工具条等信息™包含了资源的索引信息™由文本资源文件.rss经过资源编译器(rcomp.exe)编译后产生(.rsc)™资源编译器可以由abld.bat显式的调用,如果使用IDE,则将IDE自动调用资源文件的编译只有CodeWarrior支持得最好CarbideC++有时并不能编译资源文件36分布与移动计算实验室资源编译器输出文件资源编译器输出文件™资源源文件.rss™二进制资源文件(.rsc,.r01,.r02,……)™每个资源由资源头文件.rsg中的一个索引标识™索引便于更有效的查找资源™一个资源文件中可以有1到4095个资源1937分布与移动计算实验室QuestionsQuestions??38分布与移动计算实验室主要类型主要类型2039分布与移动计算实验室基本类型基本类型™基本类型也是C++的基本类型,但是Symbian在e32def.h中()重新进行了定义,以满足其命名规范™所有内建类型都是T开头的(跟T类具有同等的性质)40分布与移动计算实验室基本类型(续基本类型(续11))™TIntX和TUIntXƒX=8,16,32,64ƒ符合和无符号整型unsignedint=32bTUintTUintsignedint=32bTIntTIntunsignedlongint=32bTUint32TUint32longint=32bTInt32TInt32unsignedshortint=16bTUint16TUint16shortint=16bTInt16TInt16unsignedchar=8bTUint8TUint8signedchar=8bTInt8TInt8C++类型Symbian类型Uint64=64bTUint64TUint64Int64=64bTInt64TInt642141分布与移动计算实验室基本类型(续基本类型(续11))™TReal32和TReal(=TReal64)ƒ分别为单精度和双精度浮点数ƒ运算速度比TInt慢double=64bTRealTRealdouble=64bTReal64TReal64float=32bTReal32TReal32C++类型Symbian类型42分布与移动计算

1 / 96
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功