1.1使用仿真器 1
1.1.1启动仿真器 1
第1章 起步 1
1.1.2 GUI样式 2
1.2.1程序hellotext 4
1.2文本版本的Hello World 4
1.2.2 项目定义文件 7
1.2.4从命令行生成 8
1.2.3组件定义文件 8
1.2.6在目标机器上运行 10
1.2.5在MetrowerksIDE 中生成 10
1.3小结 12
2.1硬件资源 13
第2章 系统结构 13
2.2软件基础知识 15
2.3进程、线程和上下文切换 16
2.4 可执行程序 17
2.4.3缩减大小 18
2.4.2载入和共享 18
2.4.1执行的位置 18
2.5电源管理 19
2.4.4启动应用程序和服务器 19
2.6内核和E32 20
2.8定时器 21
2.7设备驱动程序 21
2.9内存 22
2.9.1进程和线程内存 23
2.9.2在DLL中无可写静态数据 24
2.10文件 25
2.12剖析事件处理 26
2.11事件处理 26
2.13活动对象 27
2.14多任务处理和抢占 28
2.15服务器 29
2.16线程产生作用的地方 30
2.17本书涉及的API 31
2.18小结 33
3.1基本类型 34
第3章 C++和面向对象 34
3.2命名约定 35
3.2.2数据名 36
3.2.1类名 36
3.2.4宏名 37
3.2.3函数名 37
3.3函数 38
3.2.6小结 38
3.2.5版式 38
3.4 API 39
3.3.1函数参数 39
3.4.2 DLL和其他API 元素 40
3.4.1函数类型 40
3.4.4虚函数和API 41
3.4.3导出的函数 41
3.5.1瘦模板 42
3.5模板 42
3.7类 43
3.6类型转换 43
3.5.2模板中的数字 43
3.7.1接口 44
3.8设计模式 45
3.7.2不良做法 45
3.9.1描述API 46
3.9类图和UML 46
3.9.3描述类之间的关系 47
3.9.2描述类 47
3.9.4描述派生关系 48
3.10小结 49
3.9.5基数 49
4.2 图形架构简介 50
4.1名字变更的意义 50
第4章 简单图形应用程序 50
4.3 应用程序结构 51
4.4.2项目规范文件 53
4.4.1程序 53
4.4图形化的“Hello World!”程序 53
4.4.3获得UID 54
4.4.4生成应用程序 55
4.4.6源代码 56
4.4.5在CodeWarrior IDE中生成 56
4.5资源文件 63
4.5.2定义快捷键和菜单 64
4.5.1头 64
4.5.3字符串资源 66
4.7启动应用程序 67
4.6实际应用 67
4.8.1从菜单栏中由指针生成的命令 68
4.8命令和事件处理 68
4.8.3快捷键中的命令 69
4.8.2菜单栏中的键盘生成命令 69
4.11设置MetroTRK 70
4.10目标式调试 70
4.9终止应用程序 70
4.13设置CodeWarriorID 71
4.12启动MetroTRK 71
4.11.1配置 71
4.15小结 72
4.14调试应用程序 72
第5章 字符串和描述符 73
5.1.2 Symbian OS中的字符串 74
5.1.1 C中的字符串 74
5.1字符串与内存 74
5.2.1修改C字符串 77
5.2修改字符串 77
5.2.3修改HBufC 78
5.2.2修改Symbian OS的字符串 78
5.2.4描述符类型小结 80
5.2.6再论文字 81
5.2.5在接口中使用抽象类 81
5.3标准描述符函数 82
5.3.4提取 83
5.3.3搜索 83
5.3.1基本函数 83
5.3.2比较 83
5.4更多的文本API 84
5.3.9格式化 84
5.3.5清除和设置 84
5.3.6操作数据 84
5.3.7字母操作 84
5.3.8修剪和对齐 84
5.5 Unicode和字符转换 85
5.6二进制数据 86
5.7小结 88
6.1错误类型 89
第6章 错误处理和清理 89
6.2.1 Uikon调试键 91
6.2处理内存不足的错误 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.3清理栈上的R类 112
6.5.2错误码返回与L函数 112
6.6用户错误 113
6.7严重提示的更多知识 114
6.8测试引擎和库 115
6.9小结 116
7.1.1资源文件语法 118
7.1为什么需要针对Symbian的资源编译器 118
第7章 资源文件 118
7.1.2可本地化字符串 120
7.1.4编译资源文件 122
7.1.3多资源文件 122
7.1.5已编译资源文件的内容 124
7.2小结 127
8.1.1 User类 128
8.1几个优秀的API 128
第8章 基本API 128
8.1.2 动态缓冲 129
8.1.3集合 132
8.1.4 区域设置 135
8.1.6变量参数表 136
8.1.5数学 136
8.1.8 RDebug类 137
8.1.7字符串格式化 137
8.2.1移植问题 138
8.2 C标准库 138
8.2.2移植多线程程序 140
8.2.3全局数据 141
8.2.4结论 143
8.3小结 144
9.1战舰游戏 145
第9章 独立应用程序 145
9.2.1程序结构 146
9.2综述 146
9.2.3控制器 147
9.2.2引擎 147
9.3 引擎类 148
9.3.1舰船类 149
9.3.2舰队类 150
9.3.3游戏引擎类 154
9.4视图类 155
9.4.2绘制视图 156
9.4.1构建视图 156
9.4.3处理事件 161
9.5换算和缩放 162
9.6控制器 166
9.6.2缩放 167
9.6.1访问GUI环境 167
9.7应用程序UI 169
9.8持久性存储 171
9.8.2存储和还原 172
9.8.1作为基于文件的应用程序的Solo Ships 172
9.8.3创建默认文档 175
9.9.1视图架构 176
9.9双人战舰游戏 176
9.8.4 应用程序UI和文档 176
9.9.3舰队视图 178
9.9.2 双人战舰游戏视图 178
9.9.5视图测试程序 182
9.9.4隐藏器视图 182
9.9.6声音效果 183
9.10小结 184
10.1.1查询对话框 186
10.1对话框介绍 186
第10章 对话框和具体控件 186
10.1.2单页对话框 187
10.1.4提示文本 188
10.1.3多页对话框 188
10.1.6对话框处理 189
10.1.5控件 189
10.2一些简单对话框 190
10.1.8小结 190
10.1.7模态 190
10.2.1资源文件定义 192
10.2.2对话框代码 193
10.2.3只读对话框 196
10.2.4简单对话框处理 197
10.3.2添加按钮 200
10.3.1资源规范 200
10.3 对话框API 200
10.3.3基本函数 201
10.4对话框常用控件 203
10.4.1按钮 204
10.4.3编辑器 205
10.4.2列表 205
10.4.5访问控件 206
10.4.4在对话框中使用控件 206
10.4.6对话框中的自定义控件 207
10.5.2查询 208
10.5.1警报 208
10.5标准对话框 208
10.6小结 209
10.5.3其他标准对话框 209
11.1绘图基础 210
第11章 图形显示 210
11.1.2 Draw()概览 211
11.1.1控件 211
11.2 CGraphicsContextAPI 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.1 CONE 227
11.5 屏幕共享 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.4位置与大小 239
11.6.3组件 239
11.6.5绘图 240
11.7特殊效果 241
11.7.3动画 242
11.7.2后台备份 242
11.7.1阴影 242
11.7.4 Uikon调试键 243
11.8小结 244
11.7.6滚动 244
11.7.5控件上下文 244
12.1键、指针和命令基础知识 246
第12章 交互图形 246
12.1.1处理键事件 247
12.1.2处理指针事件 248
12.1.3将事件转换成命令 250
12.2.1 用户需求 251
12.2 对话框中的交互 251
12.2.2一些基本抽象 252
12.2.5键分布和焦点 253
12.2.4复合控件 253
12.2.3程序员需求 253
12.2.6变暗和可见性 254
12.2.8控件观察者 255
12.2.7验证 255
12.2.9容器 257
12.3键处理过程回顾 258
12.3.1焦点 260
12.4.1交互范例 261
12.4指针处理回顾 261
12.3.2文本光标 261
12.4.4捕获指针 262
12.4.3抓取指针按下控件 262
12.4.2选取相关性 262
12.4.6处理指针事件 263
12.4.5获得高分辨率的指针事件 263
12.5.1应用程序与窗口服务器的通信 264
12.5窗口服务器和控件环境API的更多知识 264
12.4.7自定义指针和键声音 264
12.5.2窗口类型 265
12.5.3标准窗口 266
12.5.4窗口组 267
12.7小结 268
12.6 shell 268
13.1基于文件的应用程序 269
第13章 文件、流和存储 269
13.1.1用户和系统文件 270
13.1.3命名和位置约定小结 271
13.1.2 UIQ应用程序文件位置 271
13.3文件服务器 272
13.2 API引论 272
13.3.1文件服务器会话 273
13.3.3驱动器、文件系统和存储介质 274
13.3.2当前目录 274
13.3.5目录 275
13.3.4文件 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.5.1内部格式和外部格式 285
13.5流 285
13.4.5文件API小结 285
13.5.2外部化和内部化数据的途径 286
13.5.3流类型 291
13.6.1直接文件存储 292
13.6存储 292
13.6.2嵌入式存储 294
13.6.3永久性文件存储 295
13.7存储类型 297
13.8字典存储和.ini文件 298
13.9 UIQ应用程序架构 299
13.10小结 300
14.1添加按钮 302
第14章 收尾工作 302
14.1.1创建位图 303
14.1.2位图转换 304
14.1.3修改资源文件 305
14.1.5 bmconv工具的补充说明 307
14.1.4生成应用程序 307
14.2添加应用程序图标 308
14.2.2添加标题 309
14.2.1创建图标 309
14.2.4 aiftool的补充说明 310
14.2.3重新生成应用程序 310
14.3为应用程序提供安装支持 311
14.3.1安装文件的安全保护 312
14.3.2生成包文件 313
14.3.4 SIS文件的安装 315
14.3.3生成最终的SIS文件 315
14.3.6应用程序的发行 316
14.3.5 SIS文件的检查和卸载 316
14.4.1GUI规划 317
14.4 UIQ应用程序的设计原则 317
14.4.3设计菜单和文件夹 318
14.4.2设计列表视图和详细视图 318
14.4.7提供文本和消息 319
14.4.6考虑文本输入 319
14.4.4标准菜单项 319
14.4.5创建对话框 319
14.5数据处理 320
14.4.10应用程序间的链接 320
14.4.8使用滚动箭头和滚动条 320
14.4.9适应各种缩放比例 320
14.6小结 321
15.1应用中与尺寸和目标无关的绘图 323
第15章 与设备和尺寸无关的图形 323
15.1.1与设备无关的绘图 326
15.1.2使用视图 330
15.1.3管理缩放因子 331
15.1.4视图和重用 332
15.2深入介绍GDI 334
15.1.5设备无关绘图的小结 334
15.2.1位图传送和位图 335
15.2.2深入介绍字体 337
15.2.3关于打印的更多知识 338
15.2.4色彩 339
15.3开发人员对于设备无关代码的探索 341
15.2.5 Web浏览 341
15.4.1 Symbian OS GUI系统的发展 342
15.4 GUI系统 342
15.4.2主要GUI组件 345
15.5小结 346
16.1 Symbian OS中的通信 347
第16章 多用户应用程序 347
16.2不带通信的Battleships 348
16.2.1视图和菜单技巧 350
16.2.2面向对象管道技术 351
16.3TOGS 352
16.2.3不同的通信 352
16.3.2起点——数据报和对话 353
16.3.1TOGS的形式 353
16.3.3 GSDP:游戏会话数据报协议 354
16.3.5测试程序 355
16.3.4 BSP:Battleships协议 355
16.3.6模式重用 356
16.4使用游戏 357
16.3.7在TOGS上进行构建 357
16.4.2 RGCP中的可靠性 358
16.4.1实际玩游戏 358
16.5 原理剖析 359
16.4.3 SMS 359
16.5.2处理攻击请求 361
16.5.1状态视图 361
16.5.3检查条件 362
16.5.4攻击处理完整过程 364
16.6.1更理想的Battleships 368
16.6更深入介绍Battleships 368
16.6.2其他游戏 370
16.6.4基础结构的改进 371
16.6.3单人游戏 371
16.7小结 373
17.1一个简单活动对象 374
第17章 活动对象 374
17.1.1构造和析构 376
17.1.2请求和处理事件 377
17.2工作方式 378
17.1.3取消请求 378
17.2.1取消请求的更多知识 379
17.2.3非抢占和优先级 381
17.2.2错误处理 381
17.2.4启动和终止规划器 382
17.2.5在活动规划器中添加功能 383
17.2.6框架小结 384
17.3.1维护未完成的请求 387
17.3活动对象模式 387
17.3.2状态机 390
17.3.3处理完成的接口 392
17.3.4长期运行的任务和增量接口 393
17.3.5 区分优先级并维护响应灵敏度 394
17.4小结 395
18.1引言 396
第18章 客户端—服务器框架 396
18.1.1处理常规请求 397
18.1.2建立会话 398
18.1.4处理异步请求 399
18.1.3启动服务器 399
18.1.7处理一个会话中的多个对象 400
18.1.6在服务器消亡后清理 400
18.1.5结束会话并在客户端消亡后清理 400
18.2性能 401
18.2.1客户端缓冲 402
18.2.3数据缓存 403
18.2.2高级事务 403
18.2.4相同进程中的相关服务器 404
18.2.5共享内存 405
18.3.1在线程间共享客户端对象 407
18.3服务器和线程 407
18.3.3时间起关键作用的服务器性能 408
18.3.2服务器中的多线程 408
18.4客户端-服务器API 409
18.3.4线程优先级 409
18.4.1线程基础 410
18.4.2线程间数据传输和数据包类 411
18.4.3客户端对象 412
18.4.4服务器端的对象 415
18.5小结 419
19.1软件结构 420
第19章 GSDP服务器 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.1任务、状态和状态机 457
第20章 GDP实现 457
20.1.1 GDP状态机 458
20.2.1 ESOCK和SMS的Symbian OS支持 462
20.2 SMS实现 462
20.2.3 GDP-SMS实现 463
20.2.2 GDP-SMS消息格式 463
20.3蓝牙实现 471
20.3.3 GDP-BT实现 472
20.3.2 GDP-BT的协议映射 472
20.3.1蓝牙的Symbian OS支持 472
20.4小结 478
A.1独立项目 480
附录A 示例项目 480
A.3 TOGS项目 481
A.2 Battleships项目 481
B.2.3 Forum Nokia 482
B.2.2 Borland 482
附录B 开发人员资源 482
B.1 Symbian开发人员网络 482
B.2 Symbian OS开发人员工具 482
B.2.1 AppForge 482
B.3 Symbian OS SDK 483
B.2.7工具文档 483
B.2.4 Metrowerks 483
B.2.5 Sun Microsystems 483
B.2.6 Texas Instuments 483
B.3.4 Symbian OS v5 484
B.3.3 Symbian OS v6.0 484
B.3.1 Symbian OS v7.0 484
B.3.2 Symbian OS v6.1 484
B.5开发人员支持 485
B.4.4 TexasInstrumentsInnovator开发包 485
B.4其他SDK和SDK扩展 485
B.4.1OPL 485
B.4.2 Visual Basic 485
B.4.3 Intel PCA开发包 485
B.5.2 Forum Nokia 486
B.5.1 Ericsson Mobility World 486
C.1 GDP 487
附录C TOGS指南和参考 487
C.1.1 Symbian OS的实现代码 488
C.1.2 GDP网络回送实现 489
C.2GDSP 490
C.1.4继续探讨GDP 490
C.1.3 GDP聊天 490
C.2.1 Symbian OS客户端实现 493
C.2.2 GSDP聊天 495
C.3.1协议综述 496
C.3 RGCP 496
C.2.3继续介绍GSDP 496
C.3.2 RGCP Symbian OS的实现 501
C.4战舰协议 504
C.3.4深入探讨RGCP 504
C.3.3 RGCP交谈 504
C.4.1协议综述 505
C.4.2游戏UI 508
C.5小结 509
C.4.4继续探讨BSP 509
C.4.3程序结构 509
D.1仿真器内部 510
附录D 仿真器参考 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
索引 520