Symbian OS C++手机应用开发

Symbian OS C++手机应用开发
作 者: Richard Harrison 周良忠 周良忠
出版社: 人民邮电出版社
丛编项: 移动开发系列丛书
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: C++
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  译者:周良忠畅销图书《C++实践之路》的译者周良忠,1970年生。本科毕业于武汉化工学院计算机应用专业。1995毕业于中国科学院武汉岩土力学研究所,获硕士学位,1997年获得博士学位。1998年创办云巅工作室(http://www.cloudcrown.com),为个人、中小企业提供专业软件定做服务。近几年开发了多款广受欢迎的共享软件。精通C++、C#、Java、Perl等开发语言。2001年开始从事计算机科技图书的创作和翻译工作,最新翻译力作有《C#PrimerPlus中文版》、《C++实践之路》等。SymbianOS软件开发开发:应用C++开发智能手机应用程序入门>>更多作品

内容简介

《Symbian OS C++手机应用开发》介绍了用SymbianOSC++进行手机开发的各方面知识。全书共分4部分,每一部分的第1章描述一个教学示例程序,其后各章根据这个例子提出的问题展开讨论。第1部分(第1~3章)简单介绍了SymbianOS。第2部分(第4~8章)解释了创建简单GUI(图形用户界面)应用程序所需的基本类、资源、API和编程约定。第3部分(第9~15章)介绍了编写重要独立应用程序的相关知识。第4部分(第16~20章)介绍了系统编程、通信和事件处理的相关知识。附录部分给出了示例项目、开发资源,以及和仿真器相关的有用信息。《Symbian OS C++手机应用开发》适用于所有SymbianOS手机开发人员以及相关的管理人员。

图书目录

第1章 起步 1

1.1 使用仿真器 1

1.1.1 启动仿真器 1

1.1.2 GUI样式 2

1.2 文本版本的Hello World 4

1.2.1 程序hellotext 4

1.2.2 项目定义文件 7

1.2.3 组件定义文件 8

1.2.4 从命令行生成 8

1.2.5 在Metrowerks IDE中生成 10

1.2.6 在目标机器上运行 10

1.3 小结 12

第2章 系统结构 13

2.1 硬件资源 13

2.2 软件基础知识 15

2.3 进程、线程和上下文切换 16

2.4 可执行程序 17

2.4.1 执行的位置 18

2.4.2 载入和共享 18

2.4.3 缩减大小 18

2.4.4 启动应用程序和服务器 19

2.5 电源管理 19

2.6 内核和E32 20

2.7 设备驱动程序 21

2.8 定时器 21

2.9 内存 22

2.9.1 进程和线程内存 23

2.9.2 在DLL中无可写静态数据 24

2.10 文件 25

2.11 事件处理 26

2.12 剖析事件处理 26

2.13 活动对象 27

2.14 多任务处理和抢占 28

2.15 服务器 29

2.16 线程产生作用的地方 30

2.17 本书涉及的API 31

2.18 小结 33

第3章 C++和面向对象 34

3.1 基本类型 34

3.2 命名约定 35

3.2.1 类名 36

3.2.2 数据名 36

3.2.3 函数名 37

3.2.4 宏名 37

3.2.5 版式 38

3.2.6 小结 38

3.3 函数 38

3.3.1 函数参数 39

3.4 API 39

3.4.1 函数类型 40

3.4.2 DLL和其他API元素 40

3.4.3 导出的函数 41

3.4.4 虚函数和API 41

3.5 模板 42

3.5.1 瘦模板 42

3.5.2 模板中的数字 43

3.6 类型转换 43

3.7 类 43

3.7.1 接口 44

3.7.2 不良做法 45

3.8 设计模式 45

3.9 类图和UML 46

3.9.1 描述API 46

3.9.2 描述类 47

3.9.3 描述类之间的关系 47

3.9.4 描述派生关系 48

3.9.5 基数 49

3.10 小结 49

第4章 简单图形应用程序 50

4.1 名字变更的意义 50

4.2 图形架构简介 50

4.3 应用程序结构 51

4.4 图形化的“Hello World!”程序 53

4.4.1 程序 53

4.4.4 项目规范文件 53

4.4.3 获得UID 54

4.4.4 生成应用程序 55

4.4.5 在CodeWarrior IDE中生成 56

4.4.6 源代码 56

4.5 资源文件 63

4.5.1 头 64

4.5.2 定义快捷键和菜单 64

4.5.3 字符串资源 66

4.6 实际应用 67

4.7 启动应用程序 67

4.8 命令和事件处理 68

4.8.1 从菜单栏中由指针生成的命令 68

4.8.2 菜单栏中的键盘生成命令 69

4.8.3 快捷键中的命令 69

4.9 终止应用程序 70

4.10 目标式调试 70

4.11 设置MetroTRK 70

4.11.1 配置 71

4.12 启动MetroTRK 71

4.13 设置CodeWarrior ID 71

4.14 调试应用程序 72

4.15 小结 72

第5章 字符串和描述符 73

5.1 字符串与内存 74

5.1.1 C中的字符串 74

5.1.2 Symbian OS中的字符串 74

5.2 修改字符串 77

5.2.1 修改C字符串 77

5.2.2 修改Symbian OS的字符串 78

5.2.3 修改HBufC 78

5.2.4 描述符类型小结 80

5.2.5 在接口中使用抽象类 81

5.2.6 再论文字 81

5.3 标准描述符函数 82

5.3.1 基本函数 83

5.3.2 比较 83

5.3.3 搜索 83

5.3.4 提取 83

5.3.5 清除和设置 84

5.3.6 操作数据 84

5.3.7 字母操作 84

5.3.8 修剪和对齐 84

5.3.9 格式化 84

5.4 更多的文本API 84

5.5 Unicode和字符转换 85

5.6 二进制数据 86

5.7 小结 88

第6章 错误处理和清理 89

6.1 错误类型 89

6.2 处理内存不足的错误 91

6.2.1 Uikon 调试键 91

6.2.2 Memorymagic应用程序 92

6.2.3 分配、销毁和堆平衡 93

6.2.4 堆失败 97

6.2.5 异常退出的工作方式 98

6.2.6 清理栈 101

6.2.7 两阶段构造 104

6.3 清理规则小结 108

6.4 C类和T类 109

6.5 R类 110

6.5.1 作为成员变量的R类 111

6.5.2 错误码返回与L函数 112

6.5.3 清理栈上的R类 112

6.6 用户错误 113

6.7 严重提示的更多知识 114

6.8 测试引擎和库 115

6.9 小结 116

第7章 资源文件 118

7.1 为什么需要针对Symbian的资源

编译器 118

7.1.1 资源文件语法 118

7.1.2 可本地化字符串 120

7.1.3 多资源文件 122

7.1.4 编译资源文件 122

7.1.5 已编译资源文件的内容 124

7.2 小结 127

第8章 基本API 128

8.1 几个优秀的API 128

8.1.1 User类 128

8.1.2 动态缓冲 129

8.1.3 集合 132

8.1.4 区域设置 135

8.1.5 数学 136

8.1.6 变量参数表 136

8.1.7 字符串格式化 137

8.1.8 RDebug类 137

8.2 C标准库 138

8.2.1 移植问题 138

8.2.2 移植多线程程序 140

8.2.3 全局数据 141

8.2.4 结论 143

8.3 小结 144

第9章 独立应用程序 145

9.1 战舰游戏 145

9.2 综述 146

9.2.1 程序结构 146

9.2.2 引擎 147

9.2.3 控制器 147

9.3 引擎类 148

9.3.1 舰船类 149

9.3.2 舰队类 150

9.3.3 游戏引擎类 154

9.4 视图类 155

9.4.1 构建视图 156

9.4.2 绘制视图 156

9.4.3 处理事件 161

9.5 换算和缩放 162

9.6 控制器 166

9.6.1 访问UI环境 167

9.6.2 缩放 167

9.7 应用程序UI 169

9.8 持久性存储 171

9.8.1 作为基于文件的应用程序的

Solo Ships 172

9.8.2 存储和还原 172

9.8.3 创建默认文档 175

9.8.4 应用程序UI和文档 176

9.9 双人战舰游戏 176

9.9.1 视图架构 176

9.9.2 双人战舰游戏视图 178

9.9.3 舰队视图 178

9.9.4 隐藏器视图 182

9.9.5 视图测试程序 182

9.9.6 声音效果 183

9.10 小结 184

第10章 对话框和具体控件 186

10.1 对话框介绍 186

10.1.1 查询对话框 186

10.1.2 单页对话框 187

10.1.3 多页对话框 188

10.1.4 提示文本 188

10.1.5 控件 189

10.1.6 对话框处理 189

10.1.7 模态 190

10.1.8 小结 190

10.2 一些简单对话框 190

10.2.1 资源文件定义 192

10.2.2 对话框代码 193

10.2.3 只读对话框 196

10.2.4 简单对话框处理 197

10.3 对话框API 200

10.3.1 资源规范 200

10.3.2 添加按钮 200

10.3.3 基本函数 201

10.4 对话框常用控件 203

10.4.1 按钮 204

10.4.2 列表 205

10.4.3 编辑器 205

10.4.4 在对话框中使用控件 206

10.4.5 访问控件 206

10.4.6 对话框中的自定义控件 207

10.5 标准对话框 208

10.5.1 警报 208

10.5.2 查询 208

10.5.3 其他标准对话框 209

10.6 小结 209

第11章 图形显示 210

11.1 绘图基础 210

11.1.1 控件 211

11.1.2 Draw()概览 211

11.2 CGraphicsContext API 213

11.2.1 坐标类 214

11.2.2 设置图形上下文 215

11.2.3 绘图函数 216

11.3 绘图和重绘 218

11.3.1 模型、视图和控制器模式 219

11.3.2 Draw()契约 220

11.4 无闪烁重绘 222

11.4.1 绘制一切 223

11.4.2 状态视图更新 224

11.4.3 命中报告 225

11.4.4 光标移动 226

11.5 屏幕共享 227

11.5.1 CONE 227

11.5.2 自主窗口和寄宿控件 228

11.5.3 复合控件 231

11.5.4 绘图的更多知识 232

11.6 CCoeControl的绘图支持 236

11.6.1 控件环境 237

11.6.2 自主窗口和寄宿 238

11.6.3 组件 239

11.6.4 位置与大小 239

11.6.5 绘图 240

11.7 特殊效果 241

11.7.1 阴影 242

11.7.2 后台备份 242

11.7.3 动画 242

11.7.4 Uikon调试键 243

11.7.5 控件上下文 244

11.7.6 滚动 244

11.8 小结 244

第12章 交互图形 246

12.1 键、指针和命令基础知识 246

12.1.1 处理键事件 247

12.1.2 处理指针事件 248

12.1.3 将事件转换成命令 250

12.2 对话框中的交互 251

12.2.1 用户需求 251

12.2.2 一些基本抽象 252

12.2.3 程序员需求 253

12.2.4 复合控件 253

1.2.5 键分布和焦点 253

12.2.6 变暗和可见性 254

12.2.7 验证 255

12.2.8 控件观察者 255

12.2.9 容器 257

12.3 键处理过程回顾 258

12.3.1 焦点 260

12.3.2 文本光标 261

12.4 指针处理回顾 261

12.4.1 交互范例 261

12.4.2 选取相关性 262

12.4.3 抓取指针按下控件 262

12.2.4 捕获指针 262

12.4.5 获得高分辨率的指针事件 263

12.4.6 处理指针事件 263

12.4.7 自定义指针和键声音 264

12.5 窗口服务器和控件环境API的

更多知识 264

12.5.1 应用程序与窗口服务器的

通信 264

12.5.2 窗口类型 265

12.5.3 标准窗口 266

12.5.4 窗口组 267

12.6 shell 268

12.7 小结 268

第13章 文件、流和存储 269

13.1 基于文件的应用程序 269

13.1.1 用户和系统文件 270

13.1.2 UIQ应用程序文件位置 271

13.1.3 命名和位置约定小结 271

13.2 API引论 272

13.3 文件服务器 272

13.3.1 文件服务器会话 273

13.3.2 当前目录 274

13.3.3 驱动器、文件系统和存储

介质 274

13.3.4 文件 275

13.3.5 目录 275

13.3.6 文件名解析 276

13.4 streams程序 277

13.4.1 与文件服务器建立连接 278

13.4.2 文件写入 279

13.4.3 回读 283

13.4.4 文件名解析 284

13.4.5 文件API小结 285

13.5 流 285

13.5.1 内部格式和外部格式 285

13.5.2 外部化和内部化数据的途径 286

13.5.3 流类型 291

13.6 存储 292

13.6.1 直接文件存储 292

13.6.2 嵌入式存储 294

13.6.3 永久性文件存储 295

13.7 存储类型 297

13.8 字典存储和.ini文件 298

13.9 UIQ应用程序架构 299

13.10 小结 300

第14章 收尾工作 302

14.1 添加按钮 302

14.1.1 创建位图 303

14.1.2 位图转换 304

14.1.3 修改资源文件 305

14.1.4 生成应用程序 307

14.1.5 bmconv工具的补充说明 307

14.2 添加应用程序图标 308

14.2.1 创建图标 309

14.2.2 添加标题 309

14.2.3 重新生成应用程序 310

14.2.4 aiftool的补充说明 310

14.3 为应用程序提供安装支持 311

14.3.1 安装文件的安全保护 312

14.3.2 生成包文件 313

14.3.3 生成最终的SIS文件 315

14.3.4 SIS文件的安装 315

14.3.5 SIS文件的检查和卸载 316

14.3.6 应用程序的发行 316

14.4 UIQ应用程序的设计原则 317

14.4.1 GUI规划 317

14.4.2 设计列表视图和详细视图 318

14.4.3 设计菜单和文件夹 318

14.4.4 标准菜单项 319

14.4.5 创建对话框 319

14.4.3 考虑文本输入 319

14.4.7 提供文本和消息 319

14.4.8 使用滚动箭头和滚动条 320

14.4.9 适应各种缩放比例 320

14.4.10 应用程序间的链接 320

14.5 数据处理 320

14.6 小结 321

第15章 与设备和尺寸无关的图形 323

15.1 应用中与尺寸和目标无关的绘图 323

15.1.1 与设备无关的绘图 326

15.1.2 使用视图 330

15.1.3 管理缩放因子 331

15.1.4 视图和重用 332

15.1.5 设备无关绘图的小结 334

15.2 深入介绍GDI 334

15.2.1 位图传送和位图 335

15.2.2 深入介绍字体 337

15.2.3 关于打印的更多知识 338

15.2.4 色彩 339

15.2.5 Web浏览 341

15.3 开发人员对于设备无关代码的探索 341

15.3.1 实际的设备影响 342

15.4 GUI系统 342

15.4.1 Symbian OS GUI系统的发展 342

15.4.2 主要GUI组件 345

15.5 小结 346

第16章 多用户应用程序 347

16.1 Symbian OS中的通信 347

16.2 不带通信的Battleships 348

16.2.1 视图和菜单技巧 350

16.2.2 面向对象管道技术 351

16.2.3 不同的通信 352

16.3 TOGS 352

16.3.1 TOGS的形式 353

16.3.2 起点——数据报和对话 353

16.3.3 GSDP:游戏会话数据报协议 354

16.3.4 BSP:Battleships协议 355

16.3.5 测试程序 355

16.3.6 模式重用 356

16.3.7 在TOGS上进行构建 357

16.4 使用游戏 357

16.4.1 实际玩游戏 358

16.4.2 RGCP中的可靠性 358

16.4.3 SMS 359

16.5 原理剖析 359

16.5.1 状态视图 361

16.5.2 处理攻击请求 361

16.5.3 检查条件 362

16.5.4 攻击处理完整过程 364

16.6 更深入介绍Battleships 368

16.6.1 更理想的Battleships 368

16.6.2 其他游戏 370

16.6.3 单人游戏 371

16.6.4 基础结构的改进 371

16.7 小结 373

第17章 活动对象 374

17.1 一个简单活动对象 374

17.1.1 构造和析构 376

17.1.2 请求和处理事件 377

17.1.3 取消请求 378

17.2 工作方式 378

17.2.1 取消请求的更多知识 379

17.2.2 错误处理 381

17.2.3 非抢占和优先级 381

17.2.4 启动和终止规划器 382

17.2.5 在活动规划器中添加功能 383

17.2.6 框架小结 384

17.3 活动对象模式 387

17.3.1 维护未完成的请求 387

17.3.2 状态机 390

17.3.3 处理完成的接口 392

17.3.4 长期运行的任务和增量接口 393

17.3.5 区分优先级并维护响应

灵敏度 394

17.4 小结 395

第18章 客户端—服务器框架 396

18.1 引言 396

18.1.1 处理常规请求 397

18.1.2 建立会话 398

18.1.3 启动服务器 399

18.1.4 处理异步请求 399

18.1.5 结束会话并在客户端消亡后

清理 400

18.1.6 在服务器消亡后清理 400

18.1.7 处理一个会话中的多个对象 400

18.2 性能 401

18.2.1 客户端缓冲 402

18.2.2 高级事务 403

18.2.3 数据缓存 403

18.2.4 相同进程中的相关服务器 404

18.2.5 共享内存 405

18.3 服务器和线程 407

18.3.1 在线程间共享客户端对象 407

18.3.2 服务器中的多线程 408

18.3.3 时间起关键作用的服务器

性能 408

18.3.4 线程优先级 409

18.4 客户端-服务器API 409

18.4.1 线程基础 410

18.4.2 线程间数据传输和数据包类 411

18.4.3 客户端对象 412

18.4.4 服务器端的对象 415

18.5 小结 419

第19章 GSDP服务器 420

19.1 软件结构 420

19.2 客户端接口 421

19.2.1 消息传递函数 423

19.2.2 监听和接收 424

19.2.3 连接和断开 426

19.2.4 作为DLL的客户端API 428

19.3 服务器实现 429

19.3.1 消息处理 430

19.3.2 发送数据报 435

19.3.3 使用ECOM框架 437

19.3.4 使用协议 438

19.3.5 接收数据报 445

19.3.6 启动和关闭 450

19.4 小结 456

第20章 GDP实现 457

20.1 任务、状态和状态机 457

20.1.1 GDP状态机 458

20.2 SMS实现 462

20.2.1 ESOCK和SMS的Symbian

OS支持 462

20.2.2 GDP-SMS消息格式 463

20.2.3 GDP-SMS实现 463

20.3 蓝牙实现 471

20.3.1 蓝牙的Symbian OS支持 472

20.3.2 GDP-BT的协议映射 472

20.3.3 GDP-BT实现 472

20.4 小结 478

附录A 示例项目 480

A.1 独立项目 480

A.2 Battleships项目 481

A.3 TOGS项目 481

附录B 开发人员资源 482

B.1 Symbian开发人员网络 482

B.2 Symbian OS开发人员工具 482

B.2.1 AppForge 482

B.2.2 Borland 482

B.2.3 Forum Nokia 482

B.2.4 Metrowerks 483

B.2.5 Sun Microsystems 483

B.2.6 Texas Instuments 483

B.2.7 工具文档 483

B.3 Symbian OS SDK 483

B.3.1 Symbian OS v7.0 484

B.3.2 Symbian OS v6.1 484

B.3.3 Symbian OS v6.0 484

B.3.4 Symbian OS v5 484

B.4 其他SDK和SDK扩展 485

B.4.1 OPL 485

B.4.2 Visual Basic 485

B.4.3 Intel PCA开发包 485

B.4.4 Texas Instruments Innovator开发包 485

B.5 开发人员支持 485

B.5.1 Ericsson Mobility World 486

B.5.2 Forum Nokia 486

附录C TOGS指南和参考 487

C.1 GDP 487

C.1.1 Symbian OS的实现代码 488

C.1.2 GDP网络回送实现 489

C.1.3 GDP聊天 490

C.1.4 继续探讨GDP 490

C.2 GDSP 490

C.2.1 Symbian OS客户端实现 493

C.2.2 GSDP聊天 495

C.2.3 继续介绍GSDP 496

C.3 RGCP 496

C.3.1 协议综述 496

C.3.2 RGCP Symbian OS的实现 501

C.3.3 RGCP交谈 504

C.3.4 深入探讨RGCP 504

C.4 战舰协议 504

C.4.1 协议综述 505

C.4.2 游戏UI 508

C.4.3 程序结构 509

C.4.4 继续探讨BSP 509

C.5 小结 509

附录D 仿真器参考 510

D.1 仿真器内部 510

D.1.1 源代码兼容性 511

D.1.2 驱动盘映射 512

D.1.3 目录体系 513

D.1.4 仿真器启动 514

D.1.5 仿真器启动参数 515

D.1.6 仿真器命令行语法 515

D.1.7 键映射 516

D.1.8 通信 516

D.1.9 仿真器有多好 517

D.1.10 调试键 519