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

更新时间:2023-09-03 15:35:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

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

移动应用开发-- Symbian C++编程基础

何锐分布与移动计算实验室,计算机学院分布与移动计算实验室, harry.he@http://www.77cn.com.cn

分布与移动计算实验室

本章内容编程规范 Symbian工程文件基本类型异常处理内存管理描述符动态数组活动对象

2

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

分布与移动计算实验室

编程规范

3

分布与移动计算实验室

Symbian编码规范目的便于阅读理解和维护便于检查,减少出错概率有助于交流维护Symbian C++编程习惯

基本准则遵循传统C++规范有具有自己特色

习惯决定成败

4

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

分布与移动计算实验室

命名规范通常类和函数的第一个字母大写所有单词连接在一起除了宏和资源标识之外,避免使用下划线 _

例如void TObject::PrepareForCommit(); class CGlobalText;

5

分布与移动计算实验室

命名规范自动变量(局部变量)第一个字母小写需要时才声明自动变量(不要象C语言那样,在方法开头就声明所有变量)永远不要在同一行初始化多个变量

全局变量不鼓励使用全局变量大写字母开头非常量的全局数据在DLL中是不支持的;最好使用线程本地存储(T.L.S.)

6

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

分布与移动计算实验室

命名规范宏所有字母大写用下划线分隔单词 IMPORT_C,EXPORT_C,_TEST_INVARIANT

指针和引用类型*或&放在类型旁边,而不是变量名旁边 TText* data; void TDemo::Append(const TDesC& aData);

7

分布与移动计算实验室

命名规范类名类名通常只能以C,R,T,M开头结构用T开头静态类没有前缀字母驱动类用D开头例如 Class CBase; Class TTypefaceInfo; Class RFont; Class MLaydoc; Class User;//静态类

8

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

分布与移动计算实验室

命名规范方法名通用规则有效 Setters通常是SetThing() Getters通常是Thing(),(如果该方法返回数据项的话)Void SetOffset(TInt aOffset) TInt Offset() const; TInt offset= GetOffset();

“Get”用于获取引用TCharFormat format; GetCharFormat(format);

9

分布与移动计算实验室

命名规范方法名(续)以L结尾的方法表示可能Leave以C结尾的方法表示其中将数据项放入了cleanup stack中以D结尾的方法表示其中的对象将被销毁

例如CStoreMap* map= CStoreMap::NewLC();

10

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

分布与移动计算实验室

命名规范成员变量以i开头

例如class TObject{ TType iType; Tint iElemementOffset; TPtrC iComponentValue;}

11

分布与移动计算实验室

命名规范方法变量(形式参数)以a开头在元音前也不使用an例如void TObject::TObject(TType aType,TInt aElementOffset);

最好使用方法重载,而不是缺省参数,这样可读性好,并且更加高效

12

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

分布与移动计算实验室

命名规范常数K开头单词开头大写例如const TInt KMaxNameLength= 0x20; const TUid KEditableTextUid={268435548};

13

分布与

移动计算实验室

命名规范枚举应当被包含在相应的类中不要全局命名空间必须用一个有意义并且无歧义的名字 T开头每个枚举成员E开头特定类中的常量可以实现成枚举型,这种情况下,可以使用K

14

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

分布与移动计算实验室

命名规范类命名程序设计中常用的四种类: T-,C-,M-,R-

类必须具有清晰的角色,而不是简单的方法与数据的集合

每个类一个头文件头文件的布局#include files friend classes; public, protected, private methods; private, protected, public data;

15

分布与移动计算实验室

Questions?

16

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

分布与移动计算实验室

Symbian工程

17

分布与移动计算实验室

主要文件bld.inf .mmp .cpp .h .rhr .rss .rls .svg .mpm .pkg Build描述文件项目文件源文件头文件资源头文件资源定义文件字符串文件矢量图标文件位图文件打包文件制作安装文件用声明build的相关信息定义了项目的组成情况

到具体工程目录18

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

分布与移动计算实验室

Build工程

19

分布与移动计算实验室

bld.inf文件Build信息文件被bldmake命令使用,以生成abld.bat及makefiles文件 prj_platforms prj_mmpfiles prj_exports prj_testexports

20

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

分布与移动计算实验室

使用bldmakebldmake为工程创建abldcd\myproject\group bldmake bldfiles

使用abld创建组件或者工程文件abld build或者 abld build wins udeb

21

分布与移动计算实验室

编译过程

22

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

分布与移动计算实验室

UIDs每个应用程序都具有唯一的UIDs UID是一个具有唯一性的32位数字 Symbian用UIDs(而不是扩展名)来标识不同的文件类型在项目定义文件(.mmp)中指定UIDs

23

分布与移动计算实验室

UIDs

24

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

分布与移动计算实验室

UID1-文件类型指示器指定了文件的类型 .EXE(UID1=KExecutableImageUid) 如果UID1为EXE,UID2和UID3则为零

.DLL (UID1=KDynamicLibraryUid) .dll/.app存储文件或者其它格式的文件这些常数在e32uid.h中定义

25

分布与移动计算实验室

UID2-子类指示器UID2指明了不同类型的DLL或者数据文件对于一个应用程序而言UID2可以三种之一 KUidApp KUidAppDllDoc KuidAppInfoFile UID2定义在APADEF.H和APGICHFL.H中

26

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

分布与移动计算实验室

UID3-代码指示器应用程序DLL (.app)唯一性的标识应用程序

文档或数据文件将其关联到特定的执行文件和图标

对于EXE而言,不需要UID2或UID3对于一个应用程序而言,其dll文件、文档以及AIF文件的UID3都是一样的。

27

分布与移动计算实验室

UIDs的分配从Symbian开发者网络可以得到发送email到uid@http://www.77cn.com.cn指明需要的UIDs的个数指明应用程序或者项目名称

0x01000000到0x0FFFFFFF之间的UIDs用于实验通常最多能够申请10个UIDs,除非是获得了Symbian授权的公司

28

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

分布与移动计算实验室

Symbian UID分配

Application Symbian Signed Un-Symbian Signed

Pre-Symbian OS v9 Protected Protected

Post Symbian OS v9 Protected Unprotected

29

分布与移动计算实验室

Symbian UID分配UID Protected Range Class(es) Range 0 0x00000000 0x00000001 1 2 3 to 6 7 Unprotect ed Range 8 to 9 A B to D E F 0x10000000 0x20000000 0x30000000 0x70000000 0x80000000 0xA0000000 0xB0000000 0xE0000000 0xF0000000 0x0FFFFFFF 0x1FFFFFFF 0x2FFFFFFF 0x6FFFFFFF 0x7FFFFFFF 0x9FFFFFFF 0xAFFFFFFF 0xDFFFFFFF 0xEFFFFFFF 0xFFFFFFFF Purpose KNullUid Not used - Includes legacy testing range Not used - Legacy UID allocations V9 protected UID/SID allocations Reserved for future use Vendor IDs Reserved for future use V9 unprotected UID allocations Reserved for future use New V9 testing range Legacy UID compatibility range

30

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

分布与移动计算实验室

mmp文件每个项目都具有一个项目定义文件,即mmp文件, mmp文件包含了如下信息目标名称目标类型 UID VID/SID Capability源文件目录源文件列表用户包含文件目录系统包含文件目录库文件调试库文件……

31

分布与移动计算实验室

建立dll

32

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

分布与移动计算实验室

dll的mmp文件实例Dll指明了UID1的值

UID2指明了静态接口DLL

33

分布与移动计算实验室

Build一个程序

34

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

分布与移动计算实验室

GUI资源文件资源文件描述了如菜单、对话框、工具条等信息包含了资源的索引信息由文本资源文件.rss经过资源编译器(rcomp.exe)编译后产生(.rsc)资源编译器可以由abld.bat显式的调用,如果使用 IDE,则将IDE自动调用

资源文件的编译只有CodeWarrior支持得最好 Carbide C++有时并不能编译资源文件35

分布与移动计算实验室

资源编译器输出文件资源源文件.rss二进制资源文件(.rsc,.r01,.r02,……)每个资源由资源头文件.rsg中的一个索引标识索引便于更有效的查找资源一个资源文件中可以有1到4095个资源

36

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

分布与移动计算实验室

Questions?

37

分布与移动计算实验室

主要类型

38

本文来源:https://www.bwwdw.com/article/wnpi.html

Top