第1章 Windows Mobile简介 1
1.1 Windows Mobile概要 1
1.1.1 Windows CE简介 1
目录 1
1.1.2 Windows CE的设计目标 2
1.1.3 Windows Mobile简介 2
1.1.4 Windows Mobile行业应用 3
1.2 Mobile2Market简介 4
1.2.1 什么是Mobile2Market 4
1.2.2 开发和支持 5
1.2.3 Logo认证和代码签名 6
1.2.5 Windows Mobile相关网站 8
1.2.4 市场推广和移动应用目录 8
第2章 Windows Mobile开发 10
2.1 事件驱动和消息响应机制 10
2.2 Windows Mobile程序和Windows程序的不同点 11
2.2.1 Windows CE API和Win32 API间的不同 11
2.2.2 Windows CE MFC和标准MFC的不同 11
2.2.3 存储器的限制 12
2.2.4 电源管理 12
2.2.5 硬件特性 12
2.2.6 测试和调试 12
2.3 Embedded Visual C++开发工具介绍 13
2.3.1 Embedded Visual C++的特性 13
2.3.2 建立应用程序 14
2.3.3 类及文件说明 18
2.3.4 编译和运行Hello Windows CE程序 20
2.3.5 辅助开发工具 20
2.4 .NET Compact Framework开发 23
2.4.1 .NET Compact Framework简介 23
2.4.2 .NET Compact Framework不包括的功能 26
2.4.3 使用Visual Studio .NET 2003进行开发 28
2.5 Windows程序向Windows Mobile程序移植的要素 35
2.5.1 移植使用Windows CE API 35
2.5.2 管理Windows CE的存储器 36
2.5.3 管理可用的电量 36
2.5.6 使用Unicode 37
2.5.4 移植图形用户接口 37
2.5.5 调整位图和图标 37
2.5.7 创建和管理窗口 38
2.5.8 使用Windows CE对话框 38
2.5.9 移植用户接口控件 38
2.5.10 管理Windows CE线程 38
2.5.11 更改用户接口 39
2.5.12 支持Windows CE通信 39
2.5.13 最小化使用注册表 40
第3章 Windows Mobile系统 41
3.1 软输入面板(SIP) 41
3.1.1 概要 41
3.1.2 显示/隐藏SIP 42
3.1.3 移动SIP 43
3.1.4 禁止SIP的单词自动填充 43
3.1.5 恢复单词自动填充 43
3.1.6 SIP徽标要求 44
3.2 密码保护 46
3.2.1 概要 46
3.2.2 在Pocket PC上的特性 46
3.2.3 Pocket PC 2003的新特性 47
3.2.4 设置密码的延迟时间 47
3.2.5 使用STPasswordManager库改变密码设置 47
3.3.2 硬按键的虚拟代码 54
3.3.1 概要 54
3.3 硬按键 54
3.3.3 使用应用程序运行键 55
3.3.4 使用STUtil类 55
3.4 后台服务程序 62
3.4.1 概要 62
3.4.2 创建Service DLL 63
3.4.3 Service的注册表配置 68
3.5 创建控制面板程序 69
3.5.1 概要 69
3.5.2 创建控制面板程序的步骤 69
3.5.3 使用示例 71
3.6.2 存储卡定位 72
3.6.1 无驱动字符 72
3.6 存储卡 72
3.6.3 CStorageCard类库 73
第4章 菜单、对话框和窗口 77
4.1 菜单 77
4.1.1 概要 77
4.1.2 和菜单有关的主要消息及其响应函数 77
4.1.3 CMenu类 79
4.1.4 上下文菜单 81
4.1.5 菜单操作技巧 83
4.2 对话框 85
4.2.1 使用资源编辑器编辑对话框 85
4.2.2 对话框的数据交换和数据检查 85
4.2.3 模态和非模态对话框 86
4.2.4 通用对话框 89
4.3 窗口 90
4.3.1 产生CWnd对象 90
4.3.2 消息映射 91
4.3.3 关闭窗口 92
4.3.4 CWnd和句柄 93
4.3.5 SDMV应用中的窗口切换函数 94
第5章 Windows Mobile控件 98
5.1 Windows标准控件和通用控件 98
5.1.1 静态控件 98
5.1.2 按钮控件 101
5.1.3 编辑控件 105
5.1.4 单选按钮 110
5.1.5 复选按钮 114
5.1.6 组合框控件 117
5.1.7 列表框控件 126
5.1.8 滚动条控件 129
5.1.9 树状控件 131
5.1.10 时间控件 135
5.1.11 月历控件 137
5.2 MFC控件类及使用范例 138
5.2.1 CCeButtonST类 138
5.2.2 Grid类 144
5.2.3 Progress类 156
6.1.1 文本输出函数 162
第6章 屏幕绘图基础 162
6.1 基本文本操作 162
6.1.2 文本属性 166
6.1.3 字符属性 169
6.1.4 字体 170
6.1.5 文本显示特殊技巧 174
6.2 基本图形图像操作 177
6.2.1 绘图函数 177
6.2.2 画笔 181
6.2.3 画刷 186
6.2.4 位图画刷 187
6.2.5 方便实用的画笔和画刷类 189
6.2.6 绘图模式 191
6.2.7 位图 193
6.2.8 位操作 194
6.2.9 图标 196
6.3 高级屏幕绘图 197
6.3.1 DIB类 197
6.3.2 未公开的图像API 202
6.3.3 imgdecmp.dll和VOImage类 203
6.3.4 IJG JPEG库 204
6.3.5 Windows CE高速图形库 207
6.3.6 二维实时图形 211
6.3.7 分析图表类库 214
7.2 Windows mobile的多任务机制 223
7.2.1 多线程和多进程 223
第7章 多线程和多进程 223
7.1 概述 223
7.2.2 线程调度和优先级 224
7.3 多线程 225
7.3.1 概述 225
7.3.2 创建线程 226
7.3.3 线程间同步 227
7.3.4 终止线程 232
7.3.5 多线程开发技巧 233
7.4 多进程 235
7.4.1 创建和终止进程 235
7.4.2 进程间共享数据 239
第8章 存储对象 242
8.1 属性数据库 242
8.1.1 数据卷 242
8.1.2 创建和装载数据卷 243
8.1.3 卸载一个卷 244
8.1.4 写入数据库卷 244
8.1.5 列举已装载的数据卷 244
8.1.6 创建属性数据库 246
8.1.7 打开和关闭数据库 247
8.1.8 读写记录 250
8.1.9 搜索记录 251
8.1.10 删除属性、记录和数据库 253
8.1.11 列举数据库信息 254
8.2 注册表 255
8.2.1 添加和更新注册表键和键值 256
8.2.2 查询注册表键值 258
8.2.3 删除键值和键 259
8.2.4 枚举键值 261
8.3 文件操作 263
8.3.1 打开读取文件 263
8.3.2 关闭文件 265
8.3.3 获得文件时间 266
8.3.4 获得文件大小 268
8.3.5 获得文件属性 269
8.3.6 文件的写操作 273
8.3.7 移动文件指针 274
8.3.8 内存映射文件 274
8.3.9 内存映射对象 277
8.3.10 查看文件系统 278
第9章 Windows Mobile通信 283
9.1 串行通信 283
9.1.1 RS-232串行接口标准 283
9.1.2 打开和关闭串行端口 285
9.1.3 读写串行端口 286
9.1.4 配置串行端口 287
9.1.5 出错处理 289
9.1.6 异步多线程通信 290
9.1.7 串口通信示例 291
9.2 红外线通信 294
9.2.1 IrDA协议概述 294
9.2.2 原始IRDA 296
9.2.3 IrCOMM 298
9.2.4 IrSock 299
9.2.5 红外通信范例 305
9.3 RAPI 310
9.3.1 RAPI概述 310
9.3.2 预定义RAPI函数 310
9.3.3 自定义RAPI函数 312
9.3.4 RAPI函数使用范例 314
9.4.1 ActiveSync概念 316
9.4 ActiveSync 316
9.4.2 ActiveSync供应者 317
9.4.3 AdoFiltr程序 320
9.5 蓝牙 331
9.5.1 简介 331
9.5.2 架构 331
9.5.3 蓝牙安全性 333
9.5.4 查询蓝牙 334
9.5.5 蓝牙设备的WinSockt接口方式 336
9.5.6 蓝牙的COM/COM方式 338
10.1 基本Windows GDI技术 340
10.1.1 普通GDI绘屏技术(ON SCREEN) 340
第10章 Windows Mobile游戏开发简介 340
10.1.2 离屏(OFF SCREEN)技术 343
10.2 GAPI 346
10.2.1 操纵GAPI 346
10.2.2 GAPI高效贴图 348
10.2.3 Gapi按键 352
10.2.4 振动效果 354
10.2.5 完整的GAPI开发示例 355
10.3 第三方开发库简介 357
第11章 Windows Mobile电话相关编程 362
11.1 连接管理 362
11.1.1 概述 362
11.1.2 建立连接管理 364
11.1.3 枚举网络标识符 365
11.1.4 创建连接 366
11.1.5 获取连接状态 371
11.1.6 连接优先级 372
11.1.7 释放连接 372
11.1.8 连接服务与代理 373
11.1.9 计划管理连接 374
11.2 TAPI 377
11.2.1 概述 377
11.2.2 初始化TAPI 378
11.2.3 打开线路设备 381
11.2.4 查询TAPI版本 382
11.2.5 电话地址转换 383
11.2.6 呼叫对方 385
11.2.7 接听电话 389
11.2.8 结束呼叫 389
11.2.9 消息处理 390
11.3 短消息服务(SMS) 396
11.3.1 SMS地址 397
11.3.2 SMS Service Center(SMSC) 397
11.3.3 打开SMS服务 398
11.3.4 SMS Message协议 400
11.3.5 发送短消息 400
11.3.6 读取短消息 403
11.3.7 关闭消息句柄 405
11.3.9 从SMS得到额外的信息 406
11.3.8 SMS通知 406
11.4 SIM卡 408
第12章 调试技巧 414
12.1 EVC的设置编译选项 414
12.2 错误 415
12.2.1 错误类型 415
12.2.2 语法或编译性错误 416
12.2.3 链接错误 416
12.2.4 运行错误 416
12.2.5 逻辑或意图错误 416
12.2.6 查看出错信息 417
12.3.1 启动Debugger 418
12.3 调试 418
12.3.2 Debugger窗口 420
12.3.3 Debugger快捷键 421
12.4 几个重要的宏 421
12.4.1 ASSERT 421
12.4.2 TRACE 422
12.4.3 VERIFY 422
12.5 日志文件 423
第13章 创建窗体 426
13.1 什么是窗体 426
13.1.1 概念 426
13.1.3 属性、方法、事件 427
13.1.2 从Form类继承窗体 427
13.2 操作窗体 432
13.2.1 创建窗体 432
13.2.2 显示窗体 433
13.2.3 关闭窗体 434
13.2.4 处理孤立的窗体 434
13.2.5 窗体操作示例 435
13.3 继承和可视继承 439
13.3.1 窗体继承 439
13.3.2 可视继承 440
第14章 鼠标和键盘输入 444
14.1 设备输入 444
14.1.2 顶端窗口 445
14.1.1 事件驱动输入 445
14.1.3 可用性 446
14.1.4 可见性 446
14.1.5 键盘输入 446
14.1.6 鼠标输入 447
14.1.7 使用控件提供的鼠标和键盘输入处理 447
14.1.8 控件支持的输入事件 447
14.1.9 输入和鼠标光标 448
14.2 鼠标输入编程 449
14.2.1 鼠标事件 449
14.2.2 自动鼠标捕获 449
14.2.3 鼠标事件处理 449
14.3 鼠标操作实例 451
14.3.1 绘制矩形虚线框 452
14.3.2 收集坐标点 454
14.3.3 绘制矩形 456
14.3.4 设置鼠标光标 457
14.3.5 使用Win32函数设置光标 458
14.4 键盘输入编程 459
14.4.1 设备按键 460
14.4.2 SIP 460
14.4.3 键盘 460
14.4.7 激活事件 461
14.4.6 焦点事件 461
14.4.5 键盘事件 461
14.4.4 Win32函数keybd event 461
14.4.8 Pocket PC设备按键 462
14.4.9 键盘事件处理 463
14.4.10 键盘输入例子KeyInput 464
14.4.11 SIP变化 464
第15章 .NET Compact Framework控件 466
15.1 什么是控件 466
15.1.1 可视化对象 466
15.1.2 保持桌面.NET Framework的一致性 467
15.2 控件分类 468
15.2.1 基类父控件 468
15.2.3 单项控件 469
15.2.2 容器控件 469
15.2.4 多项控件 470
15.2.5 命令输入控件 471
15.2.6 可视量化值控件 471
15.2.7 后台控件 471
15.3 事件、属性、方法 472
15.3.1 核心事件 472
15.3.2 核心属性 477
15.3.3 核心方法 480
15.4 控件类型 481
15.5 通用控件 482
15.5.1 标签控件 485
15.5.3 列表框和下拉框 486
15.5.2 TextBox控件 486
15.5.4 按钮控件 489
15.5.5 检查按钮和单选按钮 489
15.5.6 一个TimeTracker例子程序 489
第16章 数据绑定到控件 499
16.1 数据绑定 499
16.1.1 可数据绑定的控件 500
16.1.2 数据绑定对象 501
16.2 复杂数据绑定 504
16.3 简单数据绑定 505
16.3.1 BindingsCollection属性 506
16.3.2 格式化和解析 507
16.4 DataGrid控件 508
16.4.1 使用复杂数据绑定DataGrid控件 510
16.4.2 DataGrid控件数据显示样式 510
16.4.3 创建表和列的样式 512
16.4.4 运行时创建样式 514
16.4.5 响应用户的输入 515
16.4.6 访问DataGrid信息 516
第17章 ADO.NET编程 521
17.1 ADO.NET介绍 523
17.1.1 一个分层程序 524
17.1.2 ADO.NET类 525
17.1.3 ADO.NET出错处理 528
17.2 与数据集协同工作 529
17.2.1 创建和访问DataSet、DataTable和DataView对象 530
17.2.2 数据绑定 533
17.2.3 读写一个数据集为XML 540
17.3 Microsoft SQL Server CE 541
17.3.1 SQL Server CE文件 542
17.3.2 SQL Server CE语法 543
17.3.3 SQL Server CE Query Analyzer 545
17.3.4 创建一个SQL Server CE数据库 546
17.3.5 组装一个SQL Server CE数据库 547
17.3.6 接收和显示数据 550
17.3.7 更新一个SQL Server CE数据库 557
17.4 Microsoft SQL Server 558
17.4.1 连接到SQL Server 560
17.4.2 使用SQL Server存储过程 566
17.4.3 用DataSet对象使用存储过程 571
17.4.4 DataSet对象和并发 574
17.5 Web Services 574
17.5.1 XML、XSD和SOAP 574
17.5.2 一个Web Service程序 576
17.5.3 一个Web Service客户程序 584
第18章 同步Windows Mobile设备数据 587
18.1 理解远程数据应用程序 587
18.1.1 RDA和合并复制 588
18.1.2 IIS连接性 588
18.2 安装远程数据连接 589
18.1.3 数据库连接性 589
18.3 使用RDA 594
18.3.1 RDA概述 594
18.3.2 RDA的结构和原理 594
18.3.3 Pull数据 596
18.3.4 Push数据 598
18.3.5 使用SubmitSQL方法 598
18.4 使用合并复制 599
18.4.1 合并复制概述 599
18.4.2 合并复制的结构和原理 600
18.4.3 使用合并复制发布和订阅数据 601
18.4.4 同步数据 607
18.4.5 在设备上修改数据 608