.NET精简框架程序设计:C#版

.NET精简框架程序设计:C#版
作 者: Paul Yao David Durant 刘新军
出版社: Addison-Wesley/Pearson
丛编项: 微软移动开发系列
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: C#
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  Paul Yao首先是一个一流的程序员。他在中学时代就开始写代码,那时他开始用HP 2000E微机。他的学识足够在一个分时操作公司得到一份工作,他13岁就使用DEC 10主机。Paul是Paul Yao公司的主席(http://www.paulyao.com),这个公司提供基于微软Windows软件技术的教育与咨询服务。他共写了七本Windows编程的书,而且是MSDN杂志的重要编辑,定期写一些开发者感兴趣的文章。Paul经常在业界会议发表演讲,在那里因为他把复杂问题讲得好懂而有趣得到好评。Paul在业余时间常写示例代码和软件工具,他最高兴的事情就是给公司客户举办培训研讨会。Paul的业余爱好包括运动和打猎。目前,Paul正在为2005的铁人三项全能运动接受训练。他和他的妻子Becky和儿子Jasper·住在华盛顿州的西雅图。

内容简介

20年前,当Windows刚诞生的时候(Windows1.01),PaulYao和DavidDurant的著作《Windows程序员指南》帮助许多程序员克服了面对Windows平台带来的困难,带领第一批程序员从MS-DOS的世界跨入Windows开发的殿堂。当.NET精简框架刚诞生的时候,二位专家又经过多年潜心跟踪与研究,并与.NET精简框架开发团队紧密合作,推出了《.NET精简框架编程》,带领广大Windows程序员从成熟的桌面开发转入潜力无限的移动及嵌入式设备开发。本书涵盖了.NET精简框架开发的方方面面,如语言基础、用户界面、数据管理、创建图形输出等。书中详细地描述了编程的具体方法,使没有.NET精简框架开发经验甚至没有Windows开发经验的程序员轻松上手。更难能可贵的是,书中还深入阐述了这些方法后面的来龙去脉及分析比较,使读者不仅KnowHow,而且Knowwhy。本书的另一个显著特点是提供了大量的示例代码,以或大或小的例子形象展示了各种方法的应用场景和技巧。可以说,不论你是刚入门的初学者还是经验丰富的高手,《.NET精简框架程序设计——C#版》都是你权威的指南和参考手册。作者简介:PaulYao是PaulYao公司的总裁。PaulYao是给软件工程师提供基于MicrosoftWindows软件技术的教育和咨询服务的公司。他已经编写了七本关于Windows编程的书籍。包括与DavidDurant共同编写的关于Windows编程这个专题的第一本书Programmer'sGuidetoWindows(Sybex,1987)。Paul还是MSDN的主要编辑之一,定期为WindowsCE和PocketPc开发者撰写文章。

图书目录

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