1 .NET精简框架体系结构 1
Windows CE概述 2
设计目标 3
平台和Platform Builder 10
eMbedded Visual C++ 11
什么是.NET 14
有效的.NET实现 14
.NET的规模与范围 15
三种.NET应用程序 17
通用编程要素 20
.NET精简框架 24
设计目标 24
.NET精简框架文件 28
.NET精简框架的能力 32
.NET精简框架的限制 37
小结 38
2 什么是.NET精简框架程序? 39
.NET精简框架程序的本质 39
使用.NET精简框架库 41
有图形用户界面 41
完全由源代码定义 41
有一个或多个System.Windows.Forms.Form类的派生类 42
使用Visual Studio .NET 2003 42
使用开发环境 47
查看设计器生成的代码 49
区域 52
Cistern示例程序 53
第1步:使用设计器添加控件 53
第2步:在程序中添加代码 58
添加类 62
创建WaterMath类 64
重载函数 65
使用WaterMath对象 65
定义和使用共享方法 66
理解命名空间 67
使用智能感知 69
小结 71
3 .NET类型系统 71
使用类型信息:命名空间引用和程序集引用 72
命名空间内容 72
访问命名空间 73
程序集引用 74
标准类型 77
值类型 77
引用类型 80
声明,初始化和分配 81
值类型和引用类型作为参数 82
字符串 83
字面字符串 83
System.String类 84
字符串资源 86
类型转换 88
数值转换 88
将值转换为对象 93
内存管理 94
元数据表 95
JIT代码池 95
自动垃圾回收 97
托管数据的特殊处理 99
本地代码的手动内存管理 104
小结 104
4 平台调用 105
P/Invoke概览 105
何时使用P/Invoke 106
相对于Win32函数,为什么我们更喜欢.NET 精简框架类 108
向托管代码中导入非托管代码 109
创建P/Invoke声明 109
非托管函数细节 112
函数返回值 115
开始:C风格的函数声明 116
参数传递的限制 118
简单数据类型 118
带符号与无符号的整型 120
通过传值和传引用来传递参数 120
通过传值传递字符串参数 121
结构体 121
类型的类型和参数的类型 126
数组 127
一个简单的程序:CallWin32 129
编写Win32动态连接库 133
开发工具 133
在DLL中声明C++函数 133
手工进行P/Invoke参数传递 135
Marshal类 136
分配非托管内存空间 137
复制到非托管内存 139
从非托管内存创建对象 141
在非托管代码和托管代码间通信 143
MessageWindow类 143
在托管和非托管代码间通信的其他方法 145
比较P/Invoke支持 145
针对Windows CE的差异 146
限制 146
.NET精简框架实现细节 148
小结 148
5 创建窗体 150
什么是窗体? 150
从Form类继承窗体 151
属性,方法和事件 152
一个事件捕捉应用程序 156
操纵窗体 158
创建窗体 158
显示窗体 160
关闭窗体 161
孤立窗体 162
天气的示例应用程序 163
跟踪窗体 165
控件集 167
多线程 168
继承和可视化继承 169
小结 174
6 鼠标和键盘输入输入概览 175
事件驱动输入 177
前端窗口 178
有效和失效 178
可见性 179
键盘输入 179
鼠标输入 180
为鼠标和键盘输入使用控件 182
控件对输入事件的支持 182
对标签控件的输入 185
脱字符号和光标 186
为鼠标输入编程 187
鼠标事件 187
自动鼠标捕获 188
鼠标事件处理 188
一个示例程序:DrawRectangles 190
绘制可伸缩的橡胶矩形 190
收集点 193
绘制矩形 195
鼠标调试技巧:以文本打印鼠标坐标 196
用Cursor类设置鼠标光标 197
用Win32函数设置鼠标光标 199
键盘输入编程 200
键盘输入的来源 200
键盘事件 203
示例程序:KeyInput 209
示例程序:KeyState 215
示例程序:Caret 217
示例程序:Sleep 221
小结 224
7 深入控件 225
什么是控件? 225
可视的对象 225
源于桌面版.NET框架 226
文档、开发和混淆 229
控件的分类 230
最根本的父控件 230
容器控件 230
单项控件 231
复合项控件 232
命令输入控件 233
属性,方法和事件 234
核心事件 234
ParentChanged事件 239
核心属性 243
父/子(parent/child)属性 244
位置属性 245
数据绑定属性 246
控件状态属性 246
核心方法 247
线程安全(Thread-Safe)函数调用 247
对象清理 247
坐标转换 248
Z轴次序 248
可见性 249
与控件类型信息打交道 249
对控件进行类型转换 250
比较两个控件引用 250
五种常用控件 251
一个例程:时间跟踪器 ( TimeTracker ) 255
书写代码 256
应用程序界面 259
编写事件处理程序 260
Label 控件 262
可以显示;不能更新 262
透明性 263
TextBox控件 266
可以显示;可以输入 267
ListBox和ComboBox控件 268
ListBox控件中的列表 270
在我们的例程中使用ComboBox控件 271
按钮控件 272
触发操作 273
在运行时添加控件 273
为New按钮处理Click事件 274
为Add按钮处理Click事件 278
为Cancel按钮处理Click事件 279
RadioButton和CheckBox控件 280
一个例程: 成员注册程序 280
使用单选按钮 281
构建成员注册程序 282
使用复选框 284
改进成员注册程序 284
小结 288
8 将数据绑定到控件 289
数据绑定 289
可数据绑定的控件 290
可数据绑定的对象 291
复杂数据绑定 295
简单数据绑定 296
格式化和解析 298
DataGrid控件 300
对DataGrid控件使用复杂数据绑定 304
在DataGrid控件中设置数据显示式样 304
建立表格和列的式样 306
在运行时进行设计 308
响应用户输入 309
对DataGrid控件使用简单数据绑定 313
访问DataGrid信息 313
提供“下一步”能力 317
提供实地编辑能力 321
提供自动实地编辑能力 325
小结 332
9 深入更多的控件 333
检测支持的属性,方法和事件 333
工具:ControlPME 333
桌面.NET框架程序中的.NET精简框架控件 334
菜单 335
开始菜单 335
程序菜单 337
示例程序:ProgramMemu 340
上下文菜单 341
示例程序:TextBoxClipboard 341
在TextBox控件中支持剪贴板 343
捕获事件 346
通过子类化来截取Win32消息 348
使用MessageWindow类来获取托管代码中的消息 355
ToolBar和ImageList控件 357
工具栏 358
工具栏按钮 361
ImageList控件和图片 361
示例程序:ToolBar 363
对话框 368
内置对话框 368
示例程序:FileDialogs 370
创建自定义的对话框 371
设计Pocket PC对话框 372
编写自定义对话框 373
修正一个Pocket PC中的任务列表问题 374
示例程序:DialogBoxes 375
生成Options对话框 376
控制Options对话框 377
小结 381
10 构建自定义控件 383
自定义控件 383
控件就是对象 384
设计建议 385
关于属性和方法 389
关于事件 392
从已有的.NET控件中衍生自定义控件 394
DateBox控件示例 395
WaterTemp对象的例子 408
创建复合控件 418
TaskStatus控件示例 419
对组件之间关系的编程 421
创建新控件 423
设计技巧 423
Providing Our Own Display for the TaskStatus Control 424
为TaskStatus控件提供自己的显示功能 424
在自定义控件中添加动画 427
生活游戏 427
提供一致的速度和最小的抖动 431
对象重用 434
在多线程环境下建立自定义控件 435
控件的主线程和它的服务线程 435
多线程示例 437
在Visual Studio.NET的工具箱中添加自定义控件 442
将自定义控件放到工具箱中的障碍 442
开发设计时自定义控件 444
小结 453
11 存储 445
智能设备的数据存储 445
对象存储区 445
系统电源状态 446
安装型文件系统 447
Windows CE文件系统 447
基于ROM的文件 448
基于RAM的文件 448
文件I/O 449
File和 Directory类 452
字节级别的I/O 452
高层次的I/O 453
数据的编码和解码 454
使用I/O类 455
文本文件I/O 456
二进制文件I/O 458
写入二进制数据 459
读取二进制数据 460
I/O和结构体 460
XML文件I/O 462
访问注册表 466
打开一个注册表键 467
P/Invoke封装的需求 467
映射注册表类型到托管类型 468
打开和访问注册表键 469
读取注册表值 470
写入注册表值 471
使用函数重载来访问数据库 472
使用注册表工具类 473
更新存储的示例应用程序来使用注册表 476
小结 479
12 ADO.NET编程 481
检查ADO.NET 483
一种分层方法 483
ADO.NET类 485
ADO.NET错误处理 488
使用数据集 489
创建和访问DataSet, DataTable和DataView对象 490
数据绑定 493
以XML读取和写入数据集 500
Microsoft SQL Server CE 501
SQL Server CE文件 502
SQL Server CE语法 503
SQL Server CE查询分析器 505
创建一个SQL Server CE数据库实例 507
组装一个SQL Server CE数据库 508
取得和显示数据 510
更新SQL Server CE数据库 516
SqlCeDataAdapter类 517
查询模式信息 521
Microsoft SQL Server 525
连接到SQL Server 526
创建命令对象 532
使用SQL Server存储过程 532
用DataSet对象使用存储过程 537
数据集对象和并发性 539
Web Services 539
XML, XSD和SOAP 540
小结 551
13 同步移动数据 553
了解远程数据应用程序 554
远程数据接入RDA 和合并复制 555
IIS 连接 555
数据库连接性 556
安装远程数据连接 557
创建虚拟目录 557
配置另外的组件 560
使用 RDA 560
RDA的性能和系统开销 561
RDA编程 562
使用合并复制 569
使用优良的设计,避免同步失败 570
配置合并复制 572
使用合并复制编程 573
在合并复制和RDA之间选择 579
小结 579
附录: 579
14 远程 API 581
什么是 ActiveSync? 581
协作者和访客 583
ActiveSync 的缺点 583
ActiveSync 与 Web Services的比较 585
ActiveSync编程接口 586
你需要创建托管代码的ActiveSync的应用程序吗? 586
RAPI 基本原理 587
RAPI函数 588
生成 .NET ActiveSync 应用程序 593
RAPI 启动和关闭 593
访问对象存储 601
使用 RAPI 访问移动设备文件 602
对设备注册表项的远程访问 612
对移动设备属性数据库的远程访问 620
检测移动设备连接状态的改变 623
自启动方法 624
回调方法 624
装载程序和 DLL 629
运行移动设备端程序 629
装载移动设备端 DLL 630
小结 636
15 .NET精简框架图形 637
.NET精简框架图形介绍 637
绘图面 639
绘图函数族 640
.NET精简框架图形 641
文本输出绘制支持 643
对光栅输出的绘图支持 644
矢量输出绘图的支持 644
显示屏绘图 645
访问Graphics 对象 645
在控件上绘图 646
Paint事件 648
非Paint事件绘图 649
光栅图形 650
指定颜色 651
系统颜色 652
命名颜色 653
RGB值定义的颜色 654
创建刷子(Brush) 655
用系统颜色创建刷子 655
用命名颜色创建刷子 656
创建位图 656
位图:绘图面或绘图对象? 657
Bitmap类 657
创建空位图 658
从外部文件创建位图 659
从资源(Resource)创建位图 660
图像文件大小 663
绘制位图 664
以原图大小绘制整个位图 664
以原图大小绘制位图的一部分 664
以可变大小绘制部分位图 665
示例程序:ShowBitmap 667
矢量图形 672
创建画笔 673
一个游戏:JaspersDots 674
小结 683
16 文本与字体 685
绘制文本 685
.NET精简框架支持的文本绘制 68`5
DrawString方法 686
一个示例程序:SimpleDrawString 687
字体选择 688
控件的字体属性 689
普通字体 690
示例程序: GenericFonts 691
创建命名字体 693
枚举字体 696
示例程序:FontPicker 696
一个示例库:FontList,一个Win32字体枚举DLL 698
本地代码字体 702
示例程序:RotateText 705
放置文本 708
文字大小和MeasureString方法 709
示例程序:MeasureString 709
文本对齐 711
示例程序:TextAlign 711
自动换行 716
示例程序:WordWrap 716
文本颜色 718
文本的前景和背景色 718
示例程序:TextColor 719
小结 724
17 打印 725
打印管道 726
打印机 726
页面描述语言(PDL,Page Description Languages) 727
PCL 727
Postsctipt 727
I/O通道 728
打印任务 730
图形子系统 730
打印程序 731
打印输出编程 731
打印示例程序概述 732
示例打印程序的时间测试 733
我们的结论 734
Pocket PC打印支持 734
打印对话框 735
直接打印 739
用PCL打印机直接打印 740
示例程序:PrintDirect 741
GDI绘制 745
GDI设计记录 745
与设备无关的编程接口 746
Windows CE支持的GDI函数 746
GDI查询函数 747
GDI打印和绘图函数 747
GDI绘图属性 749
示例程序:PrintGDI 750
HP移动打印 753
Pocket PC版HP移动打印 754
HP移动打印软件开发工具包 755
Microsoft Visual Studio .NET支持的HP移动打印SDK 756
示例程序:PrintHPMobile 757
用PrinterCE绘制 757
PrintrCE库 759
示例程序:PrintField 761
小结 763