前言 1
第一部分 Windows CE编程简介 3
第一章 Windows CE操作系统概述 3
1.1 Windows CE操作系统概述 4
1.2 内核 6
1.2.1 进程和线程 6
1.2.2 中断处理 7
1.2.3 内存结构 7
1.3 持久存储 8
1.4 通信接口 10
1.4.1 串行通信 10
1.4.2 网络通信 10
1.4.3 电话应用程序编程接口 11
1.5 图形、窗口和事件子系统 12
1.5.1 窗口管理 13
1.5.2 控件、菜单、对话框和资源 13
1.5.3 图形设置接口 14
1.5.4 用户输入 15
1.6 对应用程序的其他支持 15
第二章 编程考虑 19
2.1 Win32编程简介 20
2.1.1 Win32应用程序编程界面 21
2.2 Windows CE平台和外壳考虑 21
2.3 编程工具 22
2.3.1 Windows CE工具箱 22
2.3.2 组件对象模型 22
2.3.3 Microsoft基类 25
2.3.5 国家语言支持 26
2.3.4 活动模板库 26
2.4 将基于Win32的应用程序导出到Windows CE 27
2.4.1 硬件考虑 28
2.4.2 API考虑 29
2.4.3 字符集考虑 30
2.4.4 用户界面考虑 30
2.5 调试和测试基于Windows CE的应用程序 31
2.5.1 桌面仿真调试和测试 31
2.5.2 远程调试和测试 31
2.5.3 非标准调试和测试 32
第二部分 核心服务 35
第三章 使用进程和线程 35
3.1 创建和终止进程 36
3.2 安排线程 36
3.3.1 使用等待函数 37
3.3 同步进程和线程 37
3.3.2 使用同步对象 40
3.4 进程间同步 46
3.5 同步和设备I/O 48
3.6 对共享变量的同步访问 48
第四章 访问持久存储 49
4.1 对象标识符 50
4.2 使用Windows CE数据库 51
4.2.1 创建和删除数据库 52
4.2.2 获得有关数据库的信息 53
4.2.3 枚举数据库 54
4.2.4 打开数据库 55
4.2.5 使用数据库记录 56
4.2.6 读记录和属性 57
4.2.7 排序记录 58
4.2.8 搜索记录 59
第五章 使用通信 63
5.1 串行通信 64
5.1.1 实现串行通信 65
5.2 使用调制解调器 65
5.2.1 TAPI回调函数 66
5.3 Windows CE网络 67
5.3.1 发送ICMP请求 69
5.3.2 通过Internet进行通信 69
5.3.3 访问远程文件系统 70
5.3.4 Windows套接字 72
5.3.5 网络安全特性 76
5.3.6 TCP/IP 79
5.3.7 数据链接协议 79
5.3.8 远程访问服务 80
第三部分 用户界面服务 85
第六章 设计Windows CE用户界面 85
6.1 窗口和对话框设计 86
6.2 开发菜单 88
6.3 使用命令栏 89
6.4 选择控件 90
6.5 使用颜色和灰度调色板 96
6.6 创建图标和位图 97
6.7 接收用户输入 99
6.8 提供用户反馈 99
7.1 键盘输入 101
第七章 用户输入 101
7.1.1 用户输入系统 102
7.1.2 键和字符消息 103
7.1.3 处理键盘消息 104
7.1.4 使用插入符号 105
7.2 输入笔输入 105
7.2.1 输入笔消息 105
7.3 墨迹式输入 106
第八章 图形设备界面 109
8.1 Windows CE GDI独有的特性 110
8.2 设备描述体 111
8.2.1 使用设备描述体 111
8.3 位图 113
8.3.1 使用位图 114
8.4 颜色和调色板 115
8.4.1 使用颜色 116
8.4.2 创建和使用调色板 117
8.5 画笔 118
8.6 画刷 119
8.7 打印 119
8.8 区域 120
8.8.1 剪切区域 121
8.9 形状和直线 122
8.10 文本和字体 123
8.10.1 TrueType和光栅字体 124
8.10.2 使用字体 125
8.10.3 枚举字体 126
8.10.4 格式化文本 127
8.10.5 绘制文本 127
9.1 基于Windows的示例应用程序 129
第九章 窗口 129
9.2 窗口基础 133
9.2.1 窗口关系基础 133
9.3 系统定义的窗口类 134
9.4 创建窗口 134
9.5 应用程序窗口 136
9.6 撤消窗口 137
9.7 窗口样式 137
9.7.1 非客户区域样式 138
9.8 窗口大小和位置 139
9.8.1 顶端窗口 140
9.9 窗口关系 141
9.8.2 窗口可见性 141
9.9.1 父窗口和子窗口 142
9.9.2 所有者拥有窗口 142
9.10 消息和消息队列 143
9.10.1 消息队列 143
9.10.2 接收和发送消息 144
9.10.3 消息和窗口过程 146
9.10.4 消息类型 146
9.11 计时器 149
9.12 矩形 149
第十章 控件概述 151
10.1 窗口控件概述 151
10.1.1 预定义控件 152
10.1.2 自定义控件 153
10.1.4 控件消息 154
10.1.3 控件通知消息 154
10.2 通用控件概述 155
10.2.1 通用控件样式 156
10.3 自定义绘制服务 157
10.3.1 绘图周期、绘制舞台和通知消息 158
10.3.2 使用自定义绘制服务 159
10.3.3 示例自定义绘制函数 160
10.4 HTML查看器控件 161
第十一章 基础控件 165
11.1 命令栏 165
11.1.1 使用命令栏 166
11.2 属性表 168
11.2.1 属性表页 169
11.2.2 使用属性表 170
11.3 双栏 171
11.3.1 双栏样式 172
11.4 命令带区 173
11.4.1 使用命令带区 174
11.5 选项卡控件 175
11.5.1 选项卡控件样式 176
11.5.2 扩展的选项卡控件样式 177
11.5.3 使用选项卡控件 177
11.5.4 选项卡控件结构 180
11.5.5 选项卡控件项目状态 180
11.6 工具栏 180
11.6.1 工具栏样式 181
11.6.2 工具栏大小和位置 182
11.6.3 工具栏按钮 182
11.6.4 工具栏特性 184
12.1 标题控件 187
第十二章 文件和缩放控件 187
12.1.1 标题控件样式 188
12.1.2 标题控件大小和位置 188
12.1.3 标题控件项目 188
12.1.4 标题控件消息 189
12.1.5 高级标题控件特性 189
12.2 图像列表 190
12.2.1 使用图像列表 191
12.2.2 使用图像列表中的图像 191
12.3 列表视图 193
12.3.1 列表视图样式 194
12.3.2 扩展的列表视图样式 195
12.3.3 列表视图结构 196
12.3.4 列表视图项目状态 196
12.3.5 列表视图图像列表 197
12.3.6 项目和子项目 198
12.3.7 回调项目和回调掩码 198
12.3.8 列 199
12.3.9 排列、排序和查找列表视图 200
12.3.10 列表视图项目位置 200
12.3.11 滚动位置 201
12.3.12 编辑标签 201
12.3.13 高级列表视图特性 202
12.4 轨迹栏 202
12.4.1 轨迹栏消息 203
12.5 树形视图 204
12.5.1 树形视图样式 205
12.5.2 父项目和子项目 205
12.5.6 树形视图项目位置 206
12.5.3 项目标签 206
12.5.4 树形视图项目状态 206
12.5.5 编辑树形视图标签 207
12.5.7 项目选定 208
12.5.8 项目信息 208
12.5.9 树形视图图像列表 209
12.5.10 拖放操作 210
12.6 上下控件 211
12.6.1 上下控件样式 211
12.6.2 位置和速度 212
第十三章 信息控件 213
13.1 日期和时间指示器控件 213
13.1.1 日期和时间指示器样式 214
13.1.2 日期和时间指示器用户界面 214
13.1.3 格式字符串 215
13.2 月历控件 217
13.2.1 月历样式 218
13.2.2 天的状态 218
13.2.3 时间 219
13.3 状态栏 219
13.3.1 大小和高度 220
13.3.2 多部分状态栏 220
13.3.3 状态栏文本 221
13.4 工具提示 221
13.5 进度栏 222
13.5.1 进度栏样式 223
13.5.2 范围和当前位置 223
第十四章 按钮 225
14.1 按钮状态 225
14.1.2 选定按钮 226
14.1.1 更改按钮状态 226
14.1.3 按钮发出的通知消息 227
14.2 发送到按钮的消息 228
14.3 按钮颜色消息 228
14.4 按钮默认的消息处理 229
14.5 复选框 230
14.5.1 复选框样式 231
14.6 组框 231
14.7 下压按钮 232
14.7.1 下压按钮样式 232
14.8 单选钮 234
14.8.1 单选钮样式 234
15.1 编辑控件 235
第十五章 窗口控件 235
15.1.1 编辑控件样式 236
15.1.2 文本缓冲区 238
15.1.3 更改格式化矩形 238
15.1.4 使用文本 239
15.1.5 滚动编辑控件中的文本 241
15.1.6 制表位和边距 241
15.1.7 密码字符 241
15.2 组合框 242
15.2.1 组合框样式 242
15.2.2 编辑控件选定域 244
15.3 列表框 244
15.3.1 列表框样式 244
15.4.1 滚动条样式 246
15.4 滚动条 246
15.4.2 滚动条的各个部分 247
15.4.3 滚动块的位置和滚动范围 248
15.4.4 滚动条请求 248
15.5 静态控件 249
15.5.1 静态控件样式 249
第十六章 对话框、菜单和其他资源 253
16.1 对话框 254
16.1.1 应用程序定义的对话框 255
16.1.2 通用对话框 257
16.1.3 消息框 257
16.2 菜单 259
16.2.2 菜单项 260
16.2.1 命令栏菜单 260
16.2.3 滚动菜单 262
16.2.4 创建、显示和删除菜单 262
16.3 插入符号 263
16.4 光标 264
16.5 图标 265
16.6 位置、图像和字符串 265
16.7 键盘加速键 266
16.7.1 加速键表 266
16.7.2 创建加速键表资源 267
第四部分 连接服务 271
第十七章 从台式机调用函数 271
17.1 初始化和终止远程应用程序编程接口 271
17.2 执行函数和应用程序 274
17.4 处理RAPI错误 275
17.5 示例RAPI程序 275
17.3 检索信息 275
第十八章 接收连接通知 279
18.1 基于注册表的通知 279
18.2 基于COM接口的通知 280
18.2.1 通知和取消注册过程 280
18.2.2 注册IDccMan类标识符 282
第十九章 传输文件 285
19.1 注册文件类型和文件筛选 286
19.1.1 注册文件扩展名类型 286
19.1.2 生成文件筛选的类标识符 286
19.1.3 注册文件筛选 287
19.1.4 示例文件筛选注册表条目 289
19.2 实现和使用文件筛选 290
19.3 实现哑文件筛选 292
19.2.1 在文件筛选中使用远程API调用 292
19.2.2 筛选定义的错误值 292
第二十章 同步数据 295
20.1 设计考虑 295
20.2 ActiveSync Service Provider 296
20.2.1 桌面客户 296
20.2.2 Windows CE客户 297
20.2.3 注册ActiveSync Service Provider 297
第二十一章 安装和管理应用程序 301
21.1 应用程序安装的常规过程 301
21.2 CAB向导 302
21.2.1 .inf文件 303
21.2.2 .inf文件示例 311
21.2.3 Setup.dll文件 312
21.3 应用程序管理器 313
21.3.1 “应用程序管理器”的.inf文件格式 314
21.3.2 “应用程序管理器”的.ini文件示例 315
21.3.3 应用程序安装疑难解答 316
21.4 将自定义菜单添加到Windows CE资源管理器中 317
21.5 CEUTIL:用于Windows Services的帮助程序DLL 318
21.5.1 桌面注册表结构 318
21.5.2 CEUTIL函数示例 318
第五部分 Web服务 323
第二十二章 移动频道 323
22.1 创建移动频道 325
22.1.1 编写脚本的移动频道 325
22.1.2 CDF的移动频道扩展 326
22.1.3 移动频道数据文件 333
22.1.4 移动频道脚本文件 334
22.2.1 频道同步 343
22.2 移动频道用户界面元素 343
22.2.2 频道查看器 344
22.2.3 活动桌面 345
第六部分 捆绑的应用程序界面 349
第二十三章 联系人数据库 349
23.1 使用联系人数据库编程 350
23.1.1 打开联系人数据库 351
23.1.2 添加和删除地址卡 353
23.1.3 检索和修改地址卡 354
第二十四章 收件箱 357
24.1 邮件堆 358
24.2 邮件存储库 358
24.3 邮件消息 358
24.3.1 邮件头 359
24.4 处理邮件消息 360
24.3.2 邮件附件 360
24.4.1 检索邮件消息 361
24.4.2 插入邮件消息 362
24.4.3 发送邮件消息 362
24.4.4 更新邮件存储库 362
24.4.5 移动和复制邮件消息 363
24.4.6 将文件附加到邮件消息中 363
24.4.7 处理邮件错误 363
第二十五章 邮件传输服务 365
25.1 注册传输服务 366
25.1.1 注册传输服务库 366
25.1.2 为“收件箱”添加传输服务 366
25.1.3 “收件箱”和传输服务使用的注册表条目 368
25.2.1 管理邮件分配的内存 370
25.2 实现示例传输服务 370
第七部分 Handbeld PC 375
第二十六章 对H/PC编程 375
26.1 H/PC的硬件 375
26.2 在H/PC上使用快闪卡 377
26.3 H/PC外壳 377
26.3.1 剪贴板API 378
26.3.2 WM_HIBERNATE消息 378
26.3.3 通知API 378
26.4 随H/PC捆绑的应用程序 381
第二十七章 设计H/PC用户界面 383
27.1 使用桌面和任务栏 383
27.2 设计窗口和对话框 386
27.4 接收H/PC的用户输入 387
27.3 选择菜单和控件 387
27.5 提供帮助 388
第二十八章 管理电源 389
28.1 电源管理状态 390
28.2 继续操作、重新启动和重置 391
第二十九章 编写有效使用内存的应用程序 393
29.1 内存页面 393
29.2 内存分配类型 394
29.3 线程本地存储器 395
29.4 监视应用程序使用RAM的情况 396
29.4.1 使用远程内存查看器 397
29.5 处理内存不足的情况 401
29.5.1 系统内存不足对话框 403
29.6 应用程序休眠 403
29.7 有效使用内存的提示 404
第三十章 连接到桌面并发送和接收数据 407
30.1 连接到其他计算机 407
30.2 H/PC的通信和连接硬件 409
30.2.1 使用内置串行端口 409
30.2.2 使用内置的红外串行端口 409
30.2.3 使用PC Card串行设备 410
30.3 H/PC的通信和连接软件 410
第八部分 Palm PC 415
第三十一章 为Palm PC编程 415
31.1 应用程序准则 416
31.2 安装应用程序 417
31.3 外壳界面 418
31.4 文件输入和输出 418
31.4.1 在Palm PC上使用快闪卡 419
31.7 随Palm PC捆绑的应用程序 421
31.5 用户输入和输出 421
31.6 Palm PC的通信和连接硬件 421
31.8 Palm PC的Web服务 422
31.9 Palm PC的Voice Recorder控件 422
第三十二章 Palm PC外壳 425
32.1 接收通知 426
32.2 导航控制按钮 426
32.2.1 使用硬件控制按钮 429
32.3 输入面板和输入方法 429
32.3.1 输入面板 430
32.3.2 使用输入面板编程 431
32.3.3 可安装的输入方法 431
32.3.4 输入方法注册表值 432
32.4 从应用程序内部启用红外传输 433
33.1 设计准则 435
第三十三章 设计Palm PC用户界面 435
33.2 使用桌面和任务栏 436
33.3 设计和放置对话框 437
33.4 选择菜单和控件 438
33.5 接收Palm PC的用户输入 438
第九部分 附录 441
附录A 函数和接口清单 441
A.1 ActiveSync函数 441
A.2 ActiveSync接口 441
A.3 剪贴板函数 442
A.4 COM/OLE函数 443
A.5 连接通知接口 444
A.6 “联系人”数据库函数 444
A.8 数据库管理函数 445
A.7 控制函数 445
A.9 对话框函数 446
A.10 文件和缩放控件函数 447
A.11 文件筛选接口 457
A.12 文件系统函数 457
A.13 GDI函数 458
A.14 信息控件函数 459
A.15 红外套接字函数 460
A.16 邮件函数 460
A.17 菜单函数 462
A.18 通知函数 462
A.19 进程和线程函数 462
A.21 RAS函数 463
A.22 RAPI函数 463
A.20 注册表函数 463
A.23 资源函数 465
A.24 串行通信函数 465
A.25 外壳函数 466
A.26 TAPI函数 466
A.27 传输服务函数 467
A.28 用户输入函数 467
A.29 窗口函数 468
A.30 CEUTIL函数 470
A.31 NLS函数 470
A.32 Windows控制函数 472
A.33 Windows网络函数 477
A.34 Windows套接字函数 477
A.35 WinInet函数 478
附录B 词汇 479