第1篇 开发环境简介 3
第1章 Windows Mobile发展简史 3
2.1 概述 5
第2章 .NET Compact Framework简介 5
2.3.1 与窗体相关的类 6
2.3 .NET Compact Framework类库 6
2.2 公共语言运行库 6
2.3.6 IrDA支持 8
2.3.5 Base Class 8
2.3.2 数据和XML类 8
2.3.3 XML Web Service 8
2.3.4 GDI支持 8
2.3.11 安全性 9
2.3.10 与COM组件互操作 9
2.3.7 访问Windows注册表 9
2.3.8 Bluetooth支持 9
2.3.9 Visual Basic支持 9
2.4.2 缺少的控件 10
2.4.1 方法重载 10
2.3.12 远程处理支持 10
2.4 .NET Compact Framework不包括的功能 10
2.4.5 二进制序列化 11
2.4.4 有限的数据库支持 11
2.4.3 XML功能 11
2.5 小结 12
2.4.9 不支持GDI+ 12
2.4.6 安全性 12
2.4.7 XML Web Service 12
2.4.8 不支持打印 12
3.1 概述 13
第3章 Visual Studio 2005简介 13
3.2.2 控件库 14
3.2.1 设备应用程序 14
3.2 模板 14
3.2.5 空项目 15
3.2.4 控制台应用程序 15
3.2.3 类库 15
3.3 管理项目 16
3.4 配置项目 17
3.5 提供的控件 18
3.6 设备仿真器 19
3.8 CAB设计器 20
3.7 远程工具 20
3.9.1 创建新项目 22
3.9 使用Visual Studio 2005 22
3.9.2 构造用户界面 23
3.9.4 编写代码 24
3.9.3 设置属性 24
3.9.6 生成应用程序 25
3.9.5 配置项目 25
3.9.8 部署应用程序 26
3.9.7 调试应用程序 26
3.10 小结 28
4.1 概述 29
第4章 搭建开发环境 29
4.2 安装Visual Studio 2005 30
4.5 安装SQL Server 34
4.4 安装IIS服务器 34
4.3 安装ActiveSync 34
4.6 安装SQL Server CE 35
4.7 小结 38
5.2 用户界面设计 41
5.1 概述 41
第2篇 移动界面开发 41
第5章 移动用户界面设计 41
5.2.3 视觉设计 42
5.2.2 交互设计 42
5.2.1 结构设计 42
5.3 界面设计标准 43
5.3.1 窗口标题 44
5.3.2 菜单 45
5.3.3 SIP 46
5.3.6 共享Pocket Outlook数据 47
5.3.5 使用图标 47
5.3.4 关闭应用程序 47
5.3.10 限制应用运行多个实例 48
5.3.9 使用公共对话框 48
5.3.7 鼠标指针 48
5.3.8 系统帮助 48
5.4.1 界面设计 49
5.4 界面设计经验 49
5.4.2 输入设计 51
5.4.3 使用习惯 53
5.5 小结 54
5.4.4 兼容性 54
6.2 Windows窗体 55
6.1 概述 55
第6章 Windows窗体 55
6.2.3 窗体事件 56
6.2.2 窗体方法 56
6.2.1 窗体属性 56
6.2.4 窗体背后的代码 57
6.3 设计窗体 59
6.3.2 停靠和定位控件 60
6.3.1 参考线 60
6.4.1 重命名窗体 61
6.4 使用窗体 61
6.3.3 拆分器控件 61
6.3.4 设置Tab键顺序 61
6.4.2 设置启动窗体 62
6.4.5 摆脱窗体 63
6.4.4 显示窗体 63
6.4.3 没有启动窗体时的启动设置 63
6.5.1 使用MessageBox对话框 65
6.5 使用对话框 65
6.4.6 滚动窗体 65
6.5.2 使用InputBox对话框 68
6.5.3 使用自定义对话框 70
6.6 小结 72
7.2 BindingSource控件 73
7.1 概述 73
第7章 控件 73
7.2.1 绑定操作 74
7.2.4 查找操作 76
7.2.3 删除操作 76
7.2.2 新增操作 76
7.3 Button控件 77
7.4 CheckBox控件 78
7.5 ComboBox控件 79
7.5.1 增加ComboBox数据项 80
7.6 ContextMenu控件 81
7.5.3 访问ComboBox数据项 81
7.5.2 删除ComboBox数据项 81
7.7 DataGrid控件 82
7.8 DateTimePicker控件 84
7.9 DocumentList控件 85
7.10 DomainUpDown控件 86
7.11 HardwareButton控件 88
7.12 HScrollBar控件 89
7.13 ImageList控件 90
7.14.1 显示SIP 91
7.14 InputPanel控件 91
7.15 LinkLabel控件 92
7.14.2 隐藏SIP 92
7.16 ListBox控件 93
7.16.3 访问ListBox数据项 94
7.16.2 删除ListBox数据项 94
7.16.1 增加ListBox数据项 94
7.17 ListView控件 95
7.17.2 向ListView加载数据 96
7.17.1 配置ListView详细列表视图 96
7.17.3 ListView使用图像 97
7.19 MessageQueue控件 99
7.18 MainMenu控件 99
7.19.1 创建消息队列 100
7.19.2 向队列发送消息 101
7.19.3 从队列接收消息 102
7.20 MonthCalendar控件 103
7.21 Notification控件 104
7.22 NumericUpDown控件 106
7.23 OpenFileDialog控件 107
7.24 Panel控件 108
7.25 PictureBox控件 109
7.26 ProgressBar控件 111
7.27 RadioButton控件 113
7.28 SaveFileDialog控件 114
7.29 SerialPort控件 115
7.30 Splitter控件 117
7.31 StatusBar控件 118
7.32 TabControl控件 119
7.33 TextBox控件 120
7.35 ToolBar控件 121
7.34 Timer控件 121
7.37 TreeView控件 122
7.36 TrackBar控件 122
7.38 VScrollBar控件 125
7.39 WebBrowser控件 126
7.40 小结 128
8.2 自定义控件类型与创建方式 129
8.1 概述 129
第8章 自定义控件 129
8.3.2 添加控件属性 130
8.3.1 创建复合控件 130
8.3 复合控件 130
8.3.4 使用复合控件 133
8.3.3 添加控件方法 133
8.4.1 创建扩展控件 134
8.4 扩展控件 134
8.4.2 添加控件属性 135
8.4.3 添加集合属性 136
8.4.4 控制属性值 137
8.4.5 属性的错误处理 139
8.4.7 添加控件方法 140
8.4.6 重载控件属性 140
8.4.10 添加控件事件 141
8.4.9 隐藏控件方法 141
8.4.8 重载控件方法 141
8.4.11 重载控件事件 142
8.5 自绘控件 143
8.4.12 使用扩展控件 143
8.5.1 创建自绘控件 144
8.5.2 构造控件界面 145
8.6 自定义组件 146
8.5.3 管理控件界面 146
8.7 小结 148
9.2 建立菜单 149
9.1 概述 149
第9章 菜单、工具栏和状态栏 149
9.2.1 在设计时构建菜单 150
9.2.2 编程实现动态构建菜单 151
9.2.4 启用和停用菜单项 154
9.2.3 设置菜单项复选标记 154
9.2.6 生成菜单 155
9.2.5 响应菜单Click事件 155
9.3.1 添加ContextMenu控件 156
9.3 构建弹出式菜单 156
9.3.3 编程实现弹出式菜单 157
9.3.2 配置弹出式菜单 157
9.3.4 响应弹出式菜单事件 158
9.4.1 为什么使用工具栏 159
9.4 构建工具栏 159
9.4.3 ImageList控件 160
9.4.2 构建工具栏 160
9.4.4 ToolBar控件 161
9.5 构建状态栏 163
9.4.5 响应单击按钮 163
9.6 小结 164
9.5.3 为状态栏编程 164
9.5.1 添加StatusBar控件 164
9.5.2 配置状态栏属性 164
10.1 概述 165
第10章 文件与目录 165
10.2 System.IO命名空间 166
10.3.1 Directory类和DirectoryInfo类 167
10.3 目录管理 167
10.3.2 系统目录 168
10.3.4 创建目录 172
10.3.3 确定目录是否存在 172
10.3.5 移动目录 173
10.3.7 获取指定路径下的子目录 174
10.3.6 删除目录 174
10.3.8 获取路径下的文件 176
10.4 文件管理 177
10.3.9 其他目录操作 177
10.4.3 复制文件 178
10.4.2 检查文件是否存在 178
10.4.1 File类和FileInfo类 178
10.4.4 移动文件 179
10.4.6 获取文件属性 180
10.4.5 删除文件 180
10.4.7 设置文件属性 181
10.5.2 Reader类和Writer类 182
10.5.1 创建和打开文件 182
10.5 使用文件 182
10.5.3 向文件写入数据 183
10.5.4 从文件读取数据 184
10.6 小结 186
10.5.5 使用网络远程文件 186
11.2 基础知识 187
11.1 概述 187
第11章 图形 187
11.3 绘制图形 191
11.4 绘制字符串 194
11.5 绘制图像 195
11.6 绘制图形报表 198
11.7 小结 200
12.1 概述 203
第12章 ADO.NET 203
第3篇 移动数据开发 203
12.2 System.Data命名空间 204
12.3.1 SQL Server数据供应器 205
12.3 数据供应器 205
12.3.2 SQL Server CE数据供应器 206
12.4 Connection 207
12.3.3 使用System.Data.SqlServerCe命名空间 207
12.4.3 SqlCeConnection类 208
12.4.2 连接SQL Server 208
12.4.1 SqlConnection类 208
12.5 Command 209
12.4.4 连接SQL Server CE 209
12.5.2 执行SQL Server命令 210
12.5.1 SqlCommand类 210
12.5.3 SqlCeCommand类 211
12.6 DataReader 212
12.5.4 执行SQL Server CE命令 212
12.6.1 SqlDataReader类 213
12.6.2 SqlCeDataReader类 214
12.7.1 SqlDataAdapter类 215
12.7 DataAdapter 215
12.7.2 SqlCeDataAdapter类 216
12.8.1 构造DataSet 217
12.8 DataSet 217
12.8.5 编程构造DataSet 218
12.8.4 利用Web Service构造DataSet 218
12.8.2 利用DataAdapter构造DataSet 218
12.8.3 利用XML构造DataSet 218
12.8.7 清除DataSet 219
12.8.6 刷新DataSet 219
12.8.8 持久化DataSet 220
12.9.1 构造DataTable 222
12.9 DataTable 222
12.9.3 获得DataTable列对象 223
12.9.2 获得DataSet的DataTable对象 223
12.9.4 访问DataTable数据 224
12.9.5 查询DataTable数据 225
12.10.1 增加行记录 226
12.10 DataRow 226
12.11 DataColumn 227
12.10.3 查看行记录 227
12.10.2 修改行记录 227
12.11.2 增加列对象 228
12.11.1 获取列对象 228
12.12 DataView 229
12.13 小结 230
13.2.1 绑定到控件 231
13.2 绑定控件 231
第13章 数据绑定 231
13.1 概述 231
13.2.3 向ListBox或ComboBox控件设置绑定 233
13.2.2 控件绑定多数据字段 233
13.2.4 向DataGrid控件设置绑定 235
13.2.5 向PictureBox控件设置绑定 236
13.3 数据导航 238
13.6 取消编辑 239
13.5 删除行记录 239
13.4 增加行记录 239
13.7 检验输入 240
13.8 创建主-从窗体 241
13.9 持久化数据 243
13.11 小结 244
13.10 使用BindingContext对象 244
14.1 概述 245
第14章 SQL Server CE简介 245
14.2 SQL Server CE体系结构 246
14.3.1 配置SQL Server CE服务器 247
14.3 配置SQL Server CE 247
14.3.3 架设分发服务器 253
14.3.2 验证选择 253
14.3.4 创建发布服务器 256
14.4 使用SQL Server CE 258
14.4.3 查询分析器 259
14.4.2 加密数据 259
14.4.1 测试连接 259
14.6 小结 260
14.5 SQL Server CE使用许可 260
15.2 如何访问SQL Server数据库 261
15.1 概述 261
第15章 SQL Server服务器数据访问 261
15.3 使用SqlConnection连接数据库 262
15.4 使用SqlCommand查询数据库 263
15.5 向SQL语句传递参数 264
15.6 ExecuteReader方法 265
15.7 重载ExecuteReader方法 266
15.8 使用存储过程 270
15.9 DataSet和DataAdapter组件 273
15.10 使用事务 275
15.11 SQL错误处理 277
15.12 小结 278
16.1 概述 279
第16章 SQL Server CE本地数据访问 279
16.2.1 创建新的数据库 280
16.2 数据库基本操作 280
16.2.2 保护数据库 283
16.2.3 更改数据库中的数据 284
16.2.4 读取数据库数据 285
16.3 远程数据访问 286
16.3.1 PULL操作 287
16.3.2 PUSH操作 289
16.3.3 通过IIS进行身份验证 290
16.4 合并复制 294
16.5 冲突 298
16.6 数据同步设计策略 299
16.7 小结 300
17.2 XML基础 301
17.1 概述 301
第17章 XML编程 301
17.2.1 使用XmlReader 304
17.2.2 使用属性 309
17.3 DOM编程 313
17.3.1 读取元素 314
17.4 通过DataSet处理XML 315
17.3.2 写入元素 315
17.5 XML Schema 317
17.6 XML序列化 318
17.8 使用XML配置文件 321
17.7 使用XPath表达式 321
17.8.1 读取XML配置信息 323
17.8.2 写入XML配置信息 324
17.9 小结 325
18.2.1 注册表结构 327
18.2 Windows Mobile注册表 327
第18章 注册表编程 327
18.1 概述 327
18.2.2 注册表子树 328
18.3 使用注册表 329
18.2.3 注册表值项 329
18.3.2 读取注册表子项 330
18.3.1 创建注册表子项 330
18.3.3 创建注册表值项 331
18.3.4 读取注册表值项 332
18.3.5 删除注册表子项 333
18.3.7 注册表数据类型 334
18.3.6 删除注册表值项 334
18.4 注册表应用实例 337
18.6 小结 338
18.5 注册表安全 338
19.2.1 移动Web网站布局 341
19.2 移动Web网站 341
第4篇 移动网络开发 341
第19章 移动Web开发 341
19.1 概述 341
19.2.2 移动Web网站文件类型 343
19.2.3 移动Web网站路径 344
19.2.5 移动Web应用程序生命周期 345
19.2.4 移动Web网站中的共享代码文件夹 345
19.2.6 移动Web页面生命周期 347
19.2.7 自适应错误报告 348
19.3 ASP.NET移动控件 349
19.4.1 简易的移动Web窗体 350
19.4 移动Web窗体设计 350
19.4.2 放置多个移动Web窗体 351
19.4.3 响应控件事件 352
19.4.4 显示菜单 354
19.4.5 显示文本 355
19.4.6 允许用户打电话 356
19.4.7 用户输入 357
19.4.8 输入验证 360
19.4.10 设备筛选器 361
19.4.9 自动分页 361
19.5 自定义ASP.NET移动控件 362
19.4.11 DeviceSpecific和Choice 362
19.5.1 用户控件 363
19.5.2 自定义控件 365
19.5.3 通过继承扩展控件功能 366
19.6.1 编码支持 367
19.6 移动Web应用的国际化 367
19.6.2 资源文件 368
19.6.3 使用资源文件 369
19.7.1 Windows身份验证与授权 371
19.7 移动Web网站安全性 371
19.7.4 窗体身份验证 372
19.7.3 基于Cookie的身份验证 372
19.7.2 Passport身份验证 372
19.8 小结 374
20.1 概述 375
第20章 Web Service 375
20.2.1 查找Web Service 376
20.2 理解Web Service 376
20.2.3 确定Web Service特征 378
20.2.2 获取Web Service说明 378
20.4.1 创建Web Service项目 382
20.4 创建Web Service 382
20.3 Web Service限制 382
20.4.4 测试Web Service 384
20.4.3 添加Web方法 384
20.4.2 修改默认的类名 384
20.5.2 创建Web Service实例 387
20.5.1 添加Web引用 387
20.5 创建Web Service客户端 387
20.6.1 传递数组 388
20.6 Web Service传递数据 388
20.5.3 调用Web Service方法 388
20.6.2 传递结构体 389
20.6.3 传递对象 391
20.6.4 传递DataSet 393
20.6.5 通过Web Service更新数据 395
20.7.1 使用Polling进行异步调用 396
20.7 Web Service异步调用 396
20.7.2 使用Callback进行异步调用 398
20.7.3 终止异步调用 399
20.8 小结 400
21.2 使用HTTP协议 401
21.1 概述 401
第21章 网络编程 401
21.2.2 使用统一资源标识符 402
21.2.1 关于互联 402
21.2.5 接收Web页面 403
21.2.4 NetworkStream 403
21.2.3 WebRequest和HTTPWebRequest 403
21.2.7 向Web服务器发送数据 405
21.2.6 Web请求的例外处理 405
21.2.8 HTTP异步请求 407
21.2.9 使用代理发送HTTP请求 410
21.2.10 安全的HTTP请求 411
21.3.1 建立TCP服务器 412
21.3 使用TCP对象 412
21.3.2 建立TCP客户端 422
21.3.3 异步TCP通讯 425
21.4.1 IrDA类 426
21.4 使用IrDA对象 426
21.4.2 建立IrDA服务器 427
21.4.3 建立IrDA客户端 431
21.5 小结 432
22.1 概述 435
第22章 使用非托管代码 435
第5篇 高级移动应用开发 435
22.2 函数声明 437
22.4.1 使用SIP 438
22.4 非托管代码编程实例 438
22.3 使用非托管代码的原因 438
22.4.2 获取Pocket PC设备电量 440
22.4.3 在Today视图的工具栏上加入应用程序图标 446
22.4.4 播放声音 455
22.5 小结 458
23.2 Pocket Outlook对象模型 459
23.1 概述 459
第23章 使用POOM 459
23.3 访问POOM 460
23.4 使用任务对象 461
23.4.2 Task对象 462
23.4.1 Tasks属性 462
23.4.4 检索所选任务 463
23.4.3 检索所有任务 463
23.4.5 显示任务 464
23.4.6 增加任务 465
23.4.7 修改任务 466
23.5.2 Contact对象 467
23.5.1 Contacts属性 467
23.5 使用联系人对象 467
23.5.3 检索所有联系人 468
23.5.4 检索所选联系人 469
23.5.5 显示联系人 470
23.5.7 修改联系人 471
23.5.6 增加联系人 471
23.6 使用约会对象 472
23.6.3 检索所有约会 473
23.6.2 Appointment对象 473
23.6.1 Appointments属性 473
23.6.4 检索指定日期的约会 474
23.6.5 显示约会 475
23.6.6 增加约会 476
23.6.7 修改约会 477
23.7 小结 478
24.2 Windows CE进程和线程 479
24.1 概述 479
第24章 多线程编程 479
24.2.2 Windows CE线程 480
24.2.1 Windows CE进程 480
24.3 .NET Compact Framework线程 481
24.5 简单的多线程示例 482
24.4 多线程程序设计 482
24.6.1 创建线程 484
24.6 改进多线程示例 484
24.6.2 终止线程 485
24.6.3 工作线程 486
24.6.4 线程优先级 487
24.7 线程池 489
24.8 Timer类 491
24.9 线程内访问界面控件 494
24.10 死锁风险 495
24.11 线程同步 496
24.11.1 从多线程内部访问数据 499
24.11.2 Monitor和Mutex对象 500
24.12 小结 504
25.2 内嵌资源 505
25.1 概述 505
第25章 资源与本地化 505
25.3 资源文件 507
25.4 Visual Studio 2005中的资源文件 509
25.5 区域与本地化设置 511
25.6 附属程序集 513
25.7 加载本地化资源 514
25.8 窗体和控件本地化设置 514
25.9 小结 516
第26章 性能优化 517
26.1 概述 517
26.2 Windows窗体及其控件以及图形绘制优化 517
26.2.1 BeginUpdate和EndUpdate方法 517
26.2.2 绘制后台图像 518
26.3 数据和字符串使用优化 520
26.3.1 枚举类型 520
26.3.2 String字符串 520
26.4 XML操作优化 520
26.5 小结 522
第27章 移动安全 523
27.1 概述 523
27.2 安全风险 524
27.2.1 用户的PIM管理工具 524
27.2.2 失窃和丢失 525
27.2.3 个人设备的拥有权 525
27.2.5 骇客和黑客 526
27.3 安全实践 526
27.2.4 恶意软件 526
27.4 身份验证 528
27.5 数据加密 530
27.6.2 信息服务加密 531
27.6.1 应用层加密 531
27.6.3 网络加密选项 531
27.6 连接加密 531
27.7 可靠的数据处理 532
27.8 安全性管理 533
27.8.1 设备替换 533
27.8.2 配置管理 534
27.8.3 病毒防护 534
27.8.6 瘦客户机架构 535
27.8.5 可信赖系统的数字签名 535
27.9 小结 535
27.8.4 防护程序 535
28.2 掌上二十一点的功能 539
28.1 概述 539
28.2.1 扑克牌面绘制 539
第28章 掌上扑克游戏二十一点开发 539
第6篇 移动开发实战 539
28.2.2 游戏规则的算法实现 541
28.3 界面设计 543
28.4 功能实现 544
28.5 小结 550
29.1 概述 551
29.2 移动蚂蚁MobileAnt的功能 551
第29章 移动蚂蚁MobileAnt开发 551
29.2.1 断点续传 552
29.2.3 多协议下载 553
29.2.4 基本身份验证访问 553
29.2.2 多任务下载管理 553
29.3 界面设计 554
29.4 功能实现 556
29.4.1 公共设置模块 556
29.4.2 下载任务类 562
29.4.3 添加下载任务 573
29.4.4 断点续传 576
29.4.5 显示下载日志 579
29.5 小结 581
第30章 基于SQL Server CE 2.0的移动CRM系统开发 583
30.1 概述 583
30.2 移动MIS系统工作原理 584
30.3.1 应用开发 585
30.3.2 数据库开发 585
30.3 开发环境 585
30.4 系统设计 586
30.4.1 功能需求 586
30.4.2 系统架构 587
30.4.3 数据建模 587
30.5 功能实现 588
30.5.1 用户验证 588
30.5.2 用户登录 591
30.5.3 数据采集 593
30.5.4 数据查询 598
30.5.5 数据统计 600
30.5.6 数据同步 605
30.6 小结 607