目录 2
第一部分 基础 2
第1章 Pocket PC环境概述 2
1.1 基本用户界面 3
1.2 Windows CE的体系结构 5
1.3 GWE子系统的内部结构 8
1.4 图形设备接口述评 10
1.5 Windows程序的逻辑设计 13
1.5.1 程序中的消息处理 14
1.5.2 更新窗口客户区 15
1.6 总结 16
第2章 一个典型的Pocket PC程序 17
2.1 Windows CE程序的特性 18
2.2 用TCHAR进行机器可移植的字符串处理 20
2.3 简单Windows程序的概貌 22
2.4 通用Windows程序逻辑 25
2.5 一个典型的Windows程序 26
2.5.1 完整的WinMain清单 26
2.5.2 对WinMain的逐行分析 27
2.5.3 完整的WinProc清单 32
2.5.4 逐行分析WinProc 34
2.6 把程序转换到Windows CE下执行 38
2.6.2 对WinMain修改的讨论 39
2.6.1 对WinMain要素的修改 39
2.6.3 带注释的修正过的WinMain要素的代码清单 40
2.6.4 对WinProc要素的修改 41
2.6.5 对WinProc修改的讨论 42
2.6.6 带注释的修正过的WinProc要素的代码清单 42
2.7 简单Windows程序的设计分析 44
2.8 总结 47
2.9 Web上的样本程序 47
第3章 一个易于测试的小型Pocket PC程序 49
3.1 小型Pocket PC程序的用户界面 50
3.2 小型Pocket PC程序的设计 51
3.3 介绍消息分析器的魔力 54
3.4 使用消息分析器向导 56
3.5 小型对话框程序的实现 60
3.5.1 对话框和菜单资源模板探讨 60
3.5.2 DlgMain中的WinMain方法探讨 62
3.5.3 DlgProc方法探讨 63
3.5.4 消息处理函数研究 65
3.5.5 评估PortabilityUtils元素 68
3.5.6 考虑DataMgr元素 71
3.6 使用这个对话框程序初始化一个桌面程序 72
3.7 重定位桌面程序到Pocket PC 73
3.8 分析这个小型对话框程序的设计 74
3.9 总结 75
3.10 Web上的样本程序 76
第二部分 绘图与着色 78
第4章 使用图形绘制图像 78
4.1 简单动画程序的图形用户界面 79
4.2 使用图形绘制图像 80
4.2.1 使用绘制工具箱 80
4.2.2 可用的画笔和刷子风格 82
4.2.3 绘制操作 83
4.2.4 裁减操作 85
4.2.5 显示图像 87
4.2.6 强制进行应用程序窗口重绘 88
4.2.7 在应用程序中使用定时器 89
4.3 在应用程序设计中使用封装 91
4.4 简单动画程序的实现 94
4.4.1 回顾DlgProc方法 95
4.4.2 研究消息处理函数体 96
4.4.3 评估DrawOps元素 102
4.5 封装效果分析 105
4.6 总结 105
4.7 Web上的样本程序 106
第5章 实现一个绘图程序 108
5.1 使用橡皮筋绘制 109
5.1.1 加入消息处理函数声明及处理函数体 113
5.1.2 声明必要的静态变量以支持绘制 114
5.1.3 实现消息处理函数体以管理绘制 115
5.1.4 修改绘制处理函数以支持擦除和绘制 117
5.2 字符输入与回显 119
5.2.1 实现文本函数封装 125
5.2.2 加入变量以维护文本输入状态和文本字符串 127
5.2.3 定义自定义的WM-POSITIONCARET消息 128
5.2.4 集成字符相关消息的处理 129
5.2.5 实现WM-KEYDOWN消息处理函数 130
5.2.6 更新WM-LBUTTONDOWN消息处理函数 133
5.2.7 实现WM-CHAR消息处理函数 135
5.2.8 实现WM-POSITIONCARET消息处理函数 137
5.2.9 在WM-PAINT消息处理函数中显示文本字符串 137
5.3 总结 138
5.2.10 设计/实现方法简评 138
5.4 Web上的样本程序 139
第6章 使用位图进行图像处理 142
6.1 实现一个图像处理程序 144
6.1.1 介绍图形用户界面 144
6.1.2 程序操作与组织分析 148
6.1.3 实现图像处理程序 152
6.2 使用BitmapUtilities开发一个启动画面 164
6.2.1 介绍图形用户界面 165
6.2.2 描述该程序的内部操作 165
6.2.3 实现启动画面程序 167
6.3 使用BitmapUtiliiies实现位图动画 170
6.3.1 介绍图形用户界面 171
6.3.2 实现位图动画程序 172
6.4 为本章中的程序准备ActiveSync 178
6.5 总结 181
6.6 Web上的样本程序 181
第三部分 小规模空间内的用户友好应用程序 188
第7章 使用高效率的软件设计 188
7.1 开发设计原理 189
7.2 最终的层次化设计 200
7.3 实现过程 202
7.4 实际代码分析 203
7.4.1 实现数据类型管理器DrawObjMgr 203
7.4.2 实现对象管理器DefaultMgr 205
7.4.3 在DataMgr中添加变量和访问函数 207
7.4.4 添加CaretMgr对象 208
7.4.5 实现UserInputMgr以处理消息 209
7.4.6 修改DlgProc处理函数以便与UserInputMgr交互 214
7.4.7 使用弹出式子菜单增强主菜单 216
7.4.8 更新WM-COMMAND以处理菜单项 220
7.4.9 添加WM-INITMENUPOPUP处理函数以检查默认值 221
7.5 设计和实现时的一些注意事项 222
7.6 总结 222
7.7 Web上的样本程序 223
第8章 在图形用户界面中使用内置控件 225
8.1 在应用程序中使用内置控件 226
8.1.1 内置控件概述 228
8.1.2 使用内置控件 231
8.1.3 一个重要的可移植性问题 234
8.2 使用一组控件实现对用户友好的输入 235
8.2.1 使用滚动条和伴随文本框 236
8.2.2 生成对用户友好的滚动条控件 238
8.2.3 对用户直接在伴随文本窗口中的输入进行验证 242
8.3 总结 243
8.4 Web上的样本程序 244
第9章 开发复杂用户界面 247
9.1 拥有复杂用户界面的绘图程序 248
9.2.2 使用位图按钮的例子 252
9.2 使用位图按钮支持层次化区域 252
9.2.1 使用位图按钮的步骤 252
9.2.3 BitmapButtonMgr一览 256
9.3 使用选项卡支持层次类别 258
9.3.1 使用TabPageMgr和标签模板的步骤 258
9.3.2 使用TabPageMgr的样本程序 259
9.3.3 选项卡模板实现的回顾 265
9.4 开发人员最后要考虑的事情 266
9.5 总结 266
9.6 Web上的样本程序 267
第10章 维护应用程序参数 269
10.1 采用层次化设计管理参数 271
10.2 选择目标存储格式 274
10.3 定制参数数据库管理器的步骤 275
10.4 定制参数数据库管理器的例子 275
10.4.1 定义参数数据库的记录结构 275
10.4.2 为每个参数定义默认记录 276
10.4.3 利用函数与参数数据库交互 277
10.5 遍历各层的代码 278
10.6 根据目标格式确定底层实现方式 280
10.7 总结 281
10.8 Web上的样本程序 281
第四部分 系统程序设计 286
第11章 多线程应用和同步 286
11.1 线程的使用和滥用 287
11.1.1 线程的状态 288
11.1.2 调度线程执行 290
11.1.3 线程优先级和优先级管理 291
11.1.4 演示线程优先级的效果 292
11.2 对同步问题的介绍 294
11.2.1 同步问题的解决方案 297
11.2.2 一些设计细节的回顾 299
11.3 实现线程同步 300
11.3.1 创建线程 301
11.3.2 实现主线程 301
11.3.3 实现子线程 301
11.3.4 创建同步对象 302
11.3.5 等待步骤完成 303
11.3.6 发出步骤完成的信号 303
11.3.7 等待子线程 304
11.4 总结 305
11.5 Web上的样本程序 305
第12章 应用COM组件 308
12.1 组件对象模型体系结构 309
12.2 用ATL创建COM组件 320
12.2.1 使用ATL COM AppWizard产生一个ATL COM对象 320
12.2.2 使用ATL Objeet Wizard插入一个新的ATL对象 322
12.2.3 使用Add Method to Interface引导程序添加应用方法 324
12.2.4 生成应用程序特有的方法程序体 325
12.3 分析ATL COM组件 327
12.3.1 类的声明 327
12.3.2 类的程序体 329
12.3.3 全局方法和对象 329
12.3.4 接口定义语言文件 331
12.3.5 注册表脚本 333
12.4 创建COM客户 334
12.4.1 建立COM对象接口 335
12.4.2 编制COM对象接口程序 335
12.5 在Pocket PC上注册COM服务器 338
12.6 总结 339
12.7 Web上的样本程序 339