本书主要为使用过C、C抖和其他高级语言而现在需要学习VisualC+十.NET的程序员编写。本书应用DEITELTM特有的LIVE-CODETM方法来介绍编程方法和深入研究Microsoft VisualC++.NET语言。对于一些关键的VisualC++.NET概念,通过经严格测试的程序、逐行的代码描述和程序输出来进行介绍。书中引用了228个实例,并且包含了34131行经过测试的VisualC++.NET程序代码。此外,本书还包括了387个编程技巧,读者可使用这些技巧来编写移植方便的、可重用的且经过性能优化的应用程序。
本书首先简单介绍了VisualC++.NET的基础知识。接着介绍了一些高级内容,包括多线程、ADO.NET数据库集成、ASP.NETWeb服务、网络编程和XML处理。本书也详细介绍了有关非托管代码的一些内容,包括特性化编程、使用ATLServer开发基于Web的应用程序以及托管和非托管代码的互操作。通过使用VisualC++.NET,开发人员可以灵活地编写托管和非托管代码以及ATLServer应用程序。
第1章 .NET和VisualC++.NET简介
1.1 引言
1.2 Internet和万维网的历史
1.3 万维网协会(W3C)
1.4 可扩展标记语言
1.5 主要的软件开发趋势:面向对象技术
1.6 Microsoft.NET简介
1.7 VisualC++.NET
1.8 .NETFramework和公共语言运行库
1.9 小结
1.10 Internet和Web资源
1.11 尾注
第2章 VisualStudio.NETIDE和VisualC++.NET编程
2.1 引言
2.2 VisualStudio.NET集成开发环境概述
2.3 菜单栏和工具栏
2.4 VisualStudio.NET窗口
2.4.1 SolutionExplorer
2.4.2 Properties12
2.5 使用帮助
2.6 创建一个简单的控制台应用程序
2.7 一个简单的程序:显示一行文本
2.8 算术运算
2.9 进行判断:等值运算符和关系运算符
2.10 小结
2.11 尾注
第3章 控制结构
3.1 引言
3.2 控制结构
3.3 if选择结构
3.4 if/else选择结构
3.5 while循环结构
3.6 赋值运算符
3.7 递增运算符与递减运算符
3.8 for循环
3.9 示例:用for循环计算复式利息
3.10 switch多路选择结构
3.11 do/while循环
3.12 break和continue语句
3.13 逻辑与条件运算符
3.14 小结
3.15 尾注
第4章 函数和数组
4.1 引言
4.2 MC++中的方法和函数
4.3 函数定义
4.4 参数类型转换
4.5 MC++命名空间
4.6 值类型与引用类型
4.7 参数传递:值传递与引用传递
4.8 作用域规则
4.9 递归
4.10 函数重载
4.11 数组
4.12 数组的声明与空间分配
4.13 数组和函数
4.14 数组的值传递和引用传递
4.15 多下标数组
4.16 小结
4.17 尾注
第5章 基于对象的编程
5.1 引言
5.2 用类实现Time数据抽象类型
5.3 类的作用域
5.4 控制成员的访问
5.5 初始化类对象:构造函数
5.6 使用重载的构造函数
5.7 属性
5.8 组合:作为其他类实例变量的对象指针
5.9 使用this指针
5.10 垃圾回收机制
5.11 静态类成员
5.12 const关键字和只读属性
5.13 索引属性
5.14 数据抽象和信息隐藏
5.15 软件的重用性
5.16 命名空间和程序集
5.17 类视图·.
5.18 小结
5.19 尾注
第6章 面向对象的编程:继承性
6.1 引言
6.2 基类和派生类
6.3 protected成员
6.4 基类和派生类的关系
6.5 示例:3层继承层次结构
6.6 派生类的构造函数和析构函数
6.7 使用继承的软件工程
6.8 小结
6.9 尾注
第7章 面向对象的编程:多态性
7.1 引言
7.2 派生类对象到基类对象的转换
7.3 类型域和switch语句
7.4 多态性的示例
7.5 抽象类
7.6 案例分析:继承接口与实现
7.7 sealed类和封装方法
7.8 案例分析:多态性技术在工资计算系统中的应用
7.9 案例分析:创建和使用接口
7.10 委托
7.11 运算符重载
7.12 小结
7.13 尾注
第8章 异常处理
8.1 引言
8.2 异常处理概述
8.3 应用举例:DivideByZeroException
8.4 .NET异常的继承关系
8.5 _finally代码块介绍
8.6 Exception属性
8.7 程序员自定义的异常类
8.8 小结.
8.9 尾注
第9章 图形用户界面概念:第1部分
9.1 引言
9.2 Windows窗体
9.3 事件处理模型
9.4 控件属性与布局
9.5 Label、TextBox与Button控件
9.6 GroupBox与Panel控件
9.7 CheckBox与RadioButton按钮
9.8 PictureBox控件
9.9 鼠标事件处理
9.10 键盘事件处理
9.11 小结
9.12 尾注
第10章 图形用户界面概念:第2部分
10.1 引言
10.2 菜单
10.3 LinkLabel控件
10.4 ListBox和CheckedListBox控件
10.4.1 ListBox控件
10.4.2 CheckedListBox控件
10.5 ComboBox控件
10.6 TreeView控件
10.7 ListView控件
10.8 TabControl控件
10.9 多文档界面(MDl)窗口
10.10 可视化继承
10.11 用户自定义控件
10.12 小结
10.13 尾注
第11章 多线程
11.1 引言
11.2 线程状态:线程的生命周期
11.3 线程的优先级和线程的调度
11.4 线程同步化和Monitor类
11.5 不具有线程同步的生产者和消费者关系
11.6 具有线程同步的生产者/消费者关系
11.7 生产者/消费者关系:循环缓冲区
11.8 小结
11.9 尾注
第12章 字符串、字符与正则表达式
12.1 引言
12.2 字符和字符串的基础知识
12.3 类String的构造函数
12.4 类String的Chars属性、Length属性和CopyTo方法
12.5 字符串比较
12.6 类String的GetHashCode方法
12.7 在字符串中定位字符和子字符串
12.8 从字符串中提取子字符串
12.9 字符串连接
12.10 各种String方法
12.11 类StringBuilder
12.12 类StringBuilder的Length属性、Capacity属性和EnsureCapacity方法
12.13 类StringBuilder的Append和AppendFormat方法
12.14 类StringBuilder的Insert、Remove和Replace方法
12.15 结构体Char的方法
12.16 洗牌与发牌模拟
12.17 正则表达式与类Regex
12.18 小结
12.19 尾注
第13章 图形和多媒体
13.1 引言
13.2 图形上下文与图形对象
13.3 颜色控制
13.4 字体控制
13.5 绘制直线、矩形和椭圆
13.6 绘制圆弧
13.7 绘制多边形与多义线
13.8 高级图形处理功能
13.9 多媒体简介
13.10 加载、显示与缩放图像
13.11 制作动画
13.12 WindowsMediaPlayer
13.13 MicrosoftAgent
13.14 小结
13.15 尾注
第14章 文件与流
14.1 引言
14.2 数据层次结构
14.3 文件与流
14.4 类File和Directory
14.5 创建顺序存取文件
14.6 从顺序存取文件中读取数据
14.7 随机存取文件
14.8 创建随机存取文件
14.9 “随机地”将数据写入到随机存取文件中
14.10 从随机存取文件中顺序读取数据
14.11 案例分析:事务处理程序
14.12 小结
14.13 尾注
第15章 可扩展标记语言
15.1 引言
15.2 XML文档
15.3 XML命名空间
15.4 文档对象模型
15.5 文档类型定义、模式和验证
15.5.1 文档类型定义
15.5.2 MicrosoftXML Schema3
15.5.3 W3CXMLSchema
15.5.4 VisualC++.NET中的Schema验证
15.6 可扩展样式语言牙口XslTransform
15.7 小结
15.8 Internet和Web资源
15.9 尾注
第16章 数据库、SQL和ADO.NET
16.1 引言
16.2 关系数据库模型
16.3 关系数据库概述:数据库Books
16.4 结构化查询语言
16.4.1 基本的SELECT查询
16.4.2 WHERE子句
16.4.3 ORDERBY子句
16.4.4 合并多个表的数据:INNERJOIN
16.4.5 联接表Authors、AuthorISBN、Titles和Publishers的数据
16.4.6 1NSERT语句
16.4.7 UPDATE语句
16.4.8 DELETE语句
16.5 ADO.NET对象模型
16.6 使用ADO.NET编程:从数据库中提取信息
16.6.1 连接到一个Access数据源并查询
16.6.2 查询数据库Books
16.7 使用ADO.NET编程:修改数据库
16.8 读写XML文件
16.9 小结
16.10 Internet和Web资源
16.11 尾注
第17章 Web服务
17.1 引言
17.2 HTTP请求类型
17.3 多层体系结构
17.4 访问Web服务器
17.5 简单的HTTP事务
17.6 ASP.NET
17.7 .NETWeb月艮务基础
17.8 SOAP和Web月艮务
17.9 发布及使用Web服务
17.10 会话跟踪
17.10.1 cookie
17.10.2 使用HttpSessionState类进行会话跟踪
17.11 Web服务中的会话跟踪
17.12 案例分析:天气信息应用程序
17.13 Web服务中的用户定义类型
17.14 全局XMLWeb服务体系结构(GXA)
17.14.1 WS-Inspection7
17.14.2 WS-ROuting8
17.14.3 WS-Referral9
17.14.4 WS-Securityto
17.15 小结
17.16 本章中引用的书籍
17.17 尾注
第18章 网络连接:流式套接字和数据报
18.1 引言
18.2 建立一个简单的服务器(使用流式套接字)
18.3 建立一个简单的客户端(使用流式套接字)
18.4 使用流式套接字连接的客户/服器交互
18.5 使用数据报的无连接客户服务器交互
18.6 使用多线程服务器的客户/服务器井字游戏
18.7 小结
第19章 数据结构和数据集合
19.1 引言
19.2 自参照类
19.3 链表
19.4 堆栈
19.5 队列
19.6 树
19.6.1 整数值的二叉搜索树
19.6.2 IComparable对象的二叉搜索树
19.7 数据集合类
19.7.1 Array类
19.7.2 ArrayList类
19.7.3 Stack类
19.7.4 Hashtable类
19.8 小结
19.9 尾注
第20章 可访问性
20.1 引言
20.2 法规与资源
20.3 WebACCeSSibilitylnotoatove(WAl)
20.4 为图像提供替代文字
20.5 突出显示结构以加强可读性
20.6 VisualStudio.NET中的可访问性
20.6.1 放大工具栏图标
20.6.2 放大文本
20.6.3 修改键盘
20.6.4 重排窗口
20.7 VisualC++.NET中的可访问性
20.8 XHTML表格中的可访问性
20.9 XHTML框架中的可访问性
20.10 XML中的可访问性
20.11 利用VoiceXMLTM使用声音合成和识别
20.12 CallXMLTM
20.13 WindOWS的JAWS
20.14 其他的可访问性工具
20.15 Microson@WindOWS@XP中的可访问性
20.15.1 为有视觉缺陷的人提供的工具
20.15.2 为有听觉缺陷的人提供的工具
20.15.3 为使用键盘和鼠标有困难的人提供的工具
20.15.4 MicrosoftNarrator
20.15.5 Microsofi屏幕键盘
20.15.6 MicrosoftInternetExplorer 6中的司访问性特性
20.16 小结
20.17 Intemet和Web资源
20.18 尾注
第21章 VisuaIC++.NET的非托管代码介绍
21.1 引言
21.2 非托管代码
21.2.1 在托管代码和非托管代码之间进行选择
21.2.2 非托管代码的前景
21.3 VisualC++.NET中的改动
21.3.1 统一事件模型
21.3.2 面向对象功能的改动
21.3.3 对非托管代码的细微修改和改动
21.4 VisualC++.NET的新增功能
21.4.1 运行库检查
21.4.2特性化编程
21.4.3 ALT服务器
21.4.4 .NET的互操作性
21.5 小结
21.6 尾注
第22章 ATL和COM中的特..生化编程
22.1 引言
22.2 特性COM和ATL
22.2.1 COM介绍
22.2.2 ATL介绍
22.2.3 用特性简化ATL
22.3 创建特.睦化的COMDLL
22.4 COM事件处理特性
22.5 案例分析:BookContentsScr01lerATLAcUveX控件
22.6 小结
22.7 Internet和Web资源
第23章 ATL服务器Web应用程序
23.1 引言
23.2 ATL服务器的体系结构
23.3 创建并运行一个简单的ATL服务器示例
23.4 AdRotator示例
23.5 会话跟踪
23.5.1 cookie
23.5.2 带有内存支持的会话状态的会话跟踪
23.6 案例分析:在线的访客留言系统
23.7 案例分析:连接ATL服务器中的数据库
23.8 ATLServerWeb月艮务
23.8.1 ATLServerWeb服务体系结构概述
23.8.2 创建一个ATLServerWeb服务
23.8.3 案例分析:HugeIntegerServiceWeb服务
23.8.4 案例分析:非托管的Web服务客户端
23.9 小结
23.10 尾注
第24章 托管和非托管代码的互操作性
24.1 引言
24.2 nJustWOrkS(1JW)
24.2.1 重新访问托管和非托管代码
24.2.2 类型编组
24.3 托管和非托管的内存
24.4 包装器
24.4.1 包装托管对象
24.4.2 包装非托管对象
24.5 P1atfOrmlnvoke
24.5.1 Dlllmport特性
24.5.2 回调与结构体
24.6 小结
24.7 尾注
第25章 COM互操作.哇服务
25.1 引言
25.2 作为.NET组件的COM
25.2.1 类型库与程序集
25.2.2 运行库可调用包装器
25.2.3 早期绑定
25.2.4 后期绑定
25.3 处理COM连接点
25.4 WindOWSForm中的ActiveX控件
25.5 作为COM的.NET组件
25.5.1 COM可调用包装器
25.5.2 类型库的产生与注册
25.5.3 案例分析:使用ManagedContentsScroller作为COM
25.6 小结
25.7 尾注
附录A 运算符优先级表
附录B 数字系统
附录C ASCII码字符
附录D Unicode
附录E XHTML介绍:第1部分
附录F XHTML介绍:第2部分
附录G XHTML特殊字符
附录H XHTML颜色
附录I 位操作
欢迎使用VisualC++.NET,欢迎来到使用Visual Studio~.NET和.NET平台的Windows、Intemet和Web编程世界!本书是新版DeitelTMDeveloper系列之一,为软件开发人员和IT专业人员提供了最前沿的计算技术。
Microsoft为.NET平台所极力推荐的C++托管扩展(MC++)可以增强Visual C++。MC++可以为托管编程提供强有力的支持。利用MC++,程序员可以方便地访问.NETFramework所提供的强大的类,并且还能受益于其自动垃圾收集功能。VisualC++.NET为程序员提供了一些重要的功能,例如面向对象的编程、图形、图形用户界面(GUl)组件、异常处理、多线程、多媒体(包括音频、图像、动画和视频)、文件处理、预包装数据结构、数据库处理、网络、Web服务与分布式计算[注:由于C++与VisualC++具体的实现方式不一样,因此术语上的表示会有所区别。本书中的C++一般指标准C++。C++托管扩展(MC++)一般指托管C++的功能或使用了这些功能的代码。如谈到Microsoft的产品或编译器(用来编写托管和非托管代码),我们将使用术语VisualC++.NET]。
.NET平台为软件开发和部署提供了强大的功能,例如语言和平台无关性。例如,开发人员使用任何一种.NET语言(MC++、C#或者Visual Basic.NET)编写的代码可以为同一种软件产品提供组件。由于.NET应用程序可以驻留在多个平台上并且可以跨平台通信,因此.NET不仅有语言上的互操作性功能,还可以扩展程序的可移植性。这样在创建和应用Web服务(一种通过Intemet为客户提供功能的应用程序)时就非常方便。Microsoft合并到.NET平台中的功能能够提高程序员的开发效率并减少开发时间。
目前Visual C++.NET中没有在其他Visual Studio产品(比如Visual C#.NET)中都包含的Windows窗体设计器。通过自动生成代码,这种窗体设计器可为程序员简化创建GUI的过程。基于这个原因,本书中的所有GUI都是利用C#创建的,然后自动生成的代码可以转换为MC++。对于VisualC++.NET来说,Microsoft目前所使用的Windows窗体设计器是p版本。本书的后续版本中将会使用公开发布的GUI工具。
本书读者对象
Deitel&Associates有限公司有两种Visual C++.NET出版物,它们面向不同的读者。在www.deitel.com上以及本书中所提供的信息可以帮助确定哪一种更适合于您。
本书是DeitelTMDeveloper系列之一,也是ForExperiencedProgrammers子系列之一,该子系列面向有经验的软件开发人员,他们一般都不希望介绍太多的基础内容,而是可以直接切入正题深入了解新的技术。本书将深入讨论一些更为高级的主题。
于2003年秋季面世的VisualC++.NETHow/OProgram是我们的HowtOProgram系列之一,面向各个学院和综合性大学的学生。该书对Visual C++.NET进行了全面介绍,并提供了学习帮助和许多辅助支持。VisualC++.NETHowfoProgram假定读者具备很少或几乎不具备编程经验。前面几章主要介绍基本的编程原理。该书根据这些基础知识创建了各种逐步复杂和高级的程序,以说明如何利用Visual C++.NET来创建图形用户界面、网络应用程序、多线程应用程序和基于Web的应用程序等。
这些Visual C++.NET书籍都提供了许多可立即执行的完整程序,并且描述了在运行程序时的实际输入和输出。这就是我们的标志性LIVE-CODETM方法——我们在完整的工作程序环境中展示所有的概念。每本书的源代码都可以通过www.deitel.com免费下载。
请比较Deitell’MDeveloper系列和HowtoProgram系列,以确定哪一系列更适合您。您可以在我们的新DeitellNBuzzOnline e-mail时事通讯(www.deitel.net/newsletter/subsribe.html)上进行注册,以便给您提供与出版物有关的信息、公司通告、精彩技术文章的链接、编程技巧、教学技巧、疑难问题和趣闻轶事等。
如果您愿意与我们联系,请将e-mail发至deitel@deitel.com,我们会迅速给您回复。请访问我们的Web站点www.deitel.com、www.prenhall.com/deitel和www.InformalT.com/deitel,以获得定期的更新、勘误表、常见问题的解答等。在发送e-mail时,请附上书名和版本号。我们诚挚地希望您能使用我们的出版物愉快地学习VisualC十+.NET。
本书特色
本书有许多特色,具体如下所示:
●Web服务。Mircrosoft的.NET战略将Intemet和Web也作为软件开发和部署的一部分。Web服务技术利用标准的Intemet协议和技术(例如超文本传输协议HTTP、可扩展标记语言XML和简单对象访问协议SOAP)来实现信息共享、电子商务和其他活动。利用Web服务,程序员能以某种方式将应用程序功能打包,从而使得Web成为可重用软件组件的一个库。第17章“Web服务”中所提供的Web服务可以让用户处理“大整数”——一类由于太大而无法以.NET内置数据类型进行保存的整数。在这个例子中,用户可以输入两个大整数,然后单击按钮调用Web服务以对这两个整数进行加减以及比较运算。
●面向对象的编程。面向对象编程是在开发健壮可重用的软件时应用最为广泛的技术。本书对MC++的面向对象编程特性进行了详细讨论。第5章“基于对象的编程”介绍了如何创建类和对象,这些概念在第6章“面向对象的编程:继承性”中得到了扩展,这一章主要是讨论程序员如何“提取”出已有类的功能,从而快速创建出强大的新类[注:本书假定读者具有一些C十十指针方面的知识]。
●XML。可扩展标记语言(XML)在软件开发、电子业务、电子商务等方面的应用日益广泛,更是渗透到了整个.NET平台中。因为XML是一种独立于平台的、可描述数据和创建标记语言的技术,所以XML的数据可移植性与基于MC抖的应用程序和服务结合得很好。第15章“可扩展标记语言”就具体介绍了XML。在这一章中,我们对XML和文档对象模型(DOM)进行了讨论,DOM通过编程的方式来处理XML文档。
●多线程。程序员利用计算机可以同时(也就是所说的并发)执行许多任务,例如打印文档、从网上下载文件并且进行网上冲浪等。程序员利用多线程技术可以开发出能够执行并发任务的应用程序。过去,计算机中惟一的处理器很昂贵,它的操作系统需要在所有的应用程序中共享这个处理器。现在处理器越来越便宜,我们可以利用带有多个处理器的计算机来进行并发操作——我们将这种计算机称之为多处理器。多线程在单处理器和多处理器系统中都很有用。.NET平台的多线程功能有助于平台和与之相关的技术更好地处理多媒体密集的、数据库密集的、基于网络的、基于多处理器的分布式应用程序。第11章“多线程”就介绍了这种强有力的功能。
●ADO.NET。数据库存储了个人或单位进行商业往来时需要访问的大量信息。随着Microsoft ADO技术的发展,新面世的ADO.NET可以以新的方式构建与数据库进行交互作用的应用程序。ADO.NET为开发人员提供了XML和经过增强的对象模型,利用这些工具可以在运行可扩展的、任务关键的多层大型应用程序时访问和处理数据库。第16章“数据库、SQL和ADO.NET”介绍了处理数据库时的ADO.NET和SQL语言的功能。
●非托管代码。非托管代码是指不能使用CLR(公共语言运行库)所提供服务的代码。CRL是指.NET运行环境,它可以提供一些基本的服务,例如垃圾回收、对.NET应用程序进行数组边界检查等。虽然本书重点是介绍托管代码,但第21N25章还是对.NET中的非托管代码进行了深入阐述。这些章节谈到了利用VisualC++.NET对非托管代码的改变和增删,包括特性化编程(可以让程序员方便地将功能块插入到程序中)、ATL服务器(可以利用Visual C++.NET创建Web应用程序)。后面两章为读者介绍了托管和非托管代码间的.NET互操作。Microsoft花费了很大的心血以确保原来的VisualC++代码能与托管代码共存,而不用再去重写这部分代码。
●图形用户界面。本书提供了一些GUI(图形用户界面)应用程序,以说明VisualC++.NET中的不同主题。GUI应用程序是显示图形元素(例如用户可以与之交互的按钮工标签)的程序。VisualStudio.NET中包含了可用于C#和VisualBasic.NET的内置GUI开发工具,但没有用于VisualC++.NET的相应工具。为了创建本书中的图形用户界面,我们将C#代码(由VisualStudio.NETIDE所创建)转换为VisualC+十.NET代码。我们带读者一起检查这些代码,读者就可以用VisualC++.NET创建自定义的图形用户界面了。从而,就可以理解如何创建易懂易用的程序。
●XHTMLTM。万维网协会(W3C)宣称HTML将成为不再继续开发的技术。HTML将被可扩展超文本标记语言(XHTML)——一种将很快成为描述Web内容的标准的基于XML的技术——所代替。在第15章“可扩展性标记语言”中我们提到了XHTML,并在附录E"XHTML介绍:第1部分”和附录F“XHTML介绍:第2部分”里面对此进行了具体介绍。这两个附录中还谈到了这门新兴标记语言的标题、图像、列表、图像映射及其他功能。
●可访问性。虽然Web已经成为现在人们生活中的重要部分,但该媒体对于残疾人士还是有很多不方便的地方。特别是对于有听觉和视觉缺陷的人来说,访问多媒体资源丰富的Web站点还是件困难的事情。为了改变这种现状,W3C提出了一个WAI(WebAccessiblity Initiative)计划,旨在为有困难的人群访问Web站点提供指南。第20章“可访问性”就介绍了这些指导原则,并介绍了可以提高残疾人士的Web浏览体验的各种产品和服务。例如,这一章介绍了VoiceXML和CallXML这两种基于XML的技术,以提高基于Web内容的可访问性,从而方便有视觉缺陷的人群。
●Unicode9。由于计算机系统已经延伸到全世界的范围中,计算机厂商将不同国家的当地语言的字符集和特殊符号用数字表示出来。在有些情况下,同一种语言还有多种不同的表示方式。这种完全不同的字符集就会妨碍计算机系统之间的交流。Visual C+十.NET运行Unicode~标准(由Unicode~Consortium这一非营利性组织制定),该标准所制定的一个字符集为世界上大多数语言中的各个字符以及特殊符号都指定了惟一的数字值。附录D“Unicode~”中就讨论了这种标准,并介绍了Unicode~Consortium的Web站点:www.unicode.org, 同时通过一个MC++应用程序用多种语言来显示出“Welcome toUnicode”的字样。位操作。计算机以二进制数字或二进制位(假定值为1或0)来处理数据。计算机电路执行各种简单的位操作,例如检查位的值、设置位的值和颠倒位的值(从1到0或从0到
”。操作系统、测试设备、网络软件以及许多其他软件都需要通过使用位操作来使程序
能够“与硬件进行直接交流”。附录I“位操作”中就介绍了.NET Framework所提供
的位操作功能。
教学方式
本书包含丰富的示例,这些示例代码已经在Windows 2000和WindowsXP上经过了测试。本书集中讲述优秀的软件工程的原则,强调程序的清晰性。我们在课堂上讲述的是实践,避免使用深奥的术语和繁杂的语法,而代之以实例教学。
实例代码教学方式
本书收集了许多实例代码。这种风格体现了我们一贯的教学原则,也是我们的网络教室和基于Web的培训的核心。每个新的概念都用一个完整的、能够运行的例子来阐述,辅以程序的输入输出窗口来增加理解。我们把这种教学方式称为“实例代码方式”(LIVE-CODETMApproach)。我们使用编程语言来讲授编程语言。阅读书中的示例代码颇像在计算机上输入并运行代码。读者也可以通过我们的网站www.deitel.com上的Downloads/Resources链接下载本书的全部示例代码。其他链接提供了勘误表和常见问题的答案。
Web访问
本书及我们的其他书籍的所有源代码都可以从以下Web站点下载:
www.deitel.com
www.prenhall.com/deitel
注册一下很方便也很快捷。建议您下载所有的示例,然后在学习本书中相应部分时运行对应的程序。对示例进行修改后,您立即就可以看出这些修改所产生的效果——这样可以有效地提高您的编程技巧。这些示例中都假定用户的操作系统是Windows 2000或WindowsXP,并使用了Microsoft的IntemetlnformationServices01S)。如果需要安装IlS或其他软件,可从下载示例的Web站点中找到设置方法(注:这已经被授予版权,您在学习时可以免费使用,但如果没有PrenticeHall和作者的明确许可,您不能转载其中的任何内容)。
VisualStudio.NET是可以从Microsoft购买或下载的产品之一。VisualStudio.NET包括了4种不同版本的VisualC++.NET Academic、Professional、EnterpriseDeveloper和EnterpriseArchitect。VisualStudio.NETAcademic中包含了VisualStudio,NETProfessional的功能(为学生和老师所设计的功能除外,例如管理作业提交的Assignment Manager、发布作业通知的ApplicationPubishingTool以及代码示例等)o
VisualStudio.NET提供了一个强大的调试器,它结合了先前VisualStudio调试器的各方面优点,并且允许程序员调试包含托管代码和非托管代码的应用程序。与VisualStudio.NET相关的更多介绍和应用信息,可参见下列网址的内容:msdn.micrOsOn.cOm/libraly/defaulLasp?/url:/1ibraly/en-us/Vsdebug/html/Vc—debugging』Oulapplic北On酬
home_page.asp
Microsoft还为各种.NET语言提供了单独的产品(Visual C++.NET Standard、VisualC++.NETStandard和VisualBasic.NETStandard)。每种产品都提供了一个集成的开发环境(类似于Visual Studio.NET)和一个编译器。访问msdn.microsofi.com/vstudio/howtobuy可获得相应描述和订购的信息。
目标
每一章的开头都提出了读者学习本章的目标,每学习完一章,读者都可以对照这些目标来确定自己是否已经掌握了本章的内容。
概要
每章的概要可使读者先大致了解本章的内容。根据每章的目标,读者可按照概要采判定最有效的学习步骤。接近34,13下行代码和228个示例程序(带有程序输出)
在本书中,我们使用许多有效的完整程序来介绍Visual C++.NET的特性。这些程序有大有小。读者可从我们的Web站点,WWW.deitel.com中下载所有的示例。884幅图
本书中包含丰富的图表,其中包含大量的图、代码和程序输出388个编程技巧
我们在本书中包含了大量的编程技巧,读者可通过这些技巧将注意力集中在程序开发的重要方面。这些编程技巧的介绍形式包括:良好的编程习惯、常见的编程错误、测试和调试技巧、有关性能的技巧、可移植性技巧、软件工程经验和视觉和感觉经验。这些技巧都是作者根据长时间的编程和教学经验所得出的结论。只有掌握这些技巧,读者才有可能更快速地编写出优秀的软件。
58个良好的编程习惯
良好的编程习惯提醒用户注意一些技术,这些技术可帮助开发者编写出更清晰、更易懂和更易于维护的程序。
32个常见的编程错误
向读者提示一些学习该编程语言时经常会犯的错误。预先指出这些常见的编程错误有助于读者减少犯这些错误的可能性。
26个测试和调试技巧
通过这些技巧,读者可防止程序中产生许多bug,从而简化测试和调试的过程。
46个性能技巧
我们在本书中提供了46个性能技巧来帮助读者改进程序的性能——使程序运行得更快,或者减少程序所占用的内存。
12个可移植性技巧
可移植性技巧帮助开发者编写可移植的代码,同时也介绍了Visual C十+.NET高度的可移植性。
93个软件工程的经验
软件工程的经验主要介绍了一些影响构建软件系统(特别是大规模的系统)的体系结构和设计方面的问题。
21个视觉和感觉的经验
视觉和感觉的经验突出了图形用户界面的一些约定。这些经验有助于读者设计出吸引人的、友好的图形用户界面,这些图形用户界面都严格遵循行业规范。
小结
每章的结尾都包括本章的小结,读者可通过这些小结来回顾和强化关键的概念。
本书概述
在本节中,我们将介绍本书的全部章节和附录。除了每章所要阐述的主题外,一些章节还包含Internet和Web资源的相关介绍。在这些章节中列出了额外的资源,读者可以通过学习这些资源来加强自己的VisualC++程序设计知识。
第1章——.NET和VisualC++.NET简介
第1章介绍了Intemet、万维网以及各种推动计算机发展的技术(如XML和SOAP)的历史。其中介绍了Microsoft.NET计划和VisualC++.NET,包括Web服务,并且探讨了.NET对软件开发和软件重用的影响。
第2章——VisualStudio.NETIDE和VisualC++.NET编程
第2章介绍了VisualStudio.NET,这是一个允许程序员用标准C++和C++托管扩展(MC++)创建应用程序的集成开发环境(1DE)。Visual Studio.NET包含了代码调试和编写工具。本章介绍了VisualStudio.NET的特性(包括它的主窗口)并展示了如何编译和运行程序。本章还向读者介绍了MC+十中的控制台应用程序编程。每一个概念都会用一个完整的MC++工作程序来说明,随后用一张或多张屏幕截图来展示程序执行时的实际输入和输出结果。这是我们的实例代码(LIVE-CODETM)方法。我们还讨论了一些基本操作,如用户如何输入程序数据和编写数学表达式。
第3章——控制结构
这一章介绍了结构化编程的原理,这是一组帮助读者开发清晰的、易理解的和可维护的程序的技术。然后,本章介绍了如何使用影响语句执行顺序的控制结构。控制结构能产生易理解的、易调试的和易维护的程序。我们讨论了程序控制的三种形式——顺序、选择和循环——即if/else,while,for,do/while和switch结构。解释了break、continue语句和逻辑运算符。在前两章的基础上,创建了交互式程序(它们可以根据用户提供的输入来改变自己的行为)。
第4章——函数和数组
函数是程序员创建的一个代码段,可以从一个程序的多个点调用它。大型的程序可以分成若干交互的类,每一个类包含若干函数——这种方式有时称为“分而治之”策略(“divide andconquer” strategy)。程序可以分成许多以简明方法交互的简单组件。我们讨论了如何创建能够进行数据输入、执行计算和返回输出的函数,并且介绍了递归函数(能够调用自己的函数)和函数重载(允许多个函数拥有相同的名称)。我们分别创建了两个求平方值的函数,一个针对整数,一个针对浮点数。我们用这两个函数解释了函数重载。本章还介绍了本书的第一个数据结构——数组。数据结构对大规模数据的存储、分类、查找和处理是至关重要的。数组是一组相关的数据项,程序员可直接访问它的任何一个元素。程序员能够创建一个包含100个元素的数组,并根据它们在数组中的位置来访问这些元素,这样做要优于创建100个单独的变量并以某些方式将它们联系起来。我们讨论了如何声明和分配托管数组,并利用前面章节中的技术将数组传递给函数。第3章提供了讨论数组的重要背景,因为循环结构可用于遍历数组中的元素。这些概念的组合可以帮助读者创建高度结构化和组织合理的程序。我们还讨论了多维数组(矩形数组和嵌套数组)。多维数组可以用来存储数据表。
第5章——基于对象的编程
第5章介绍了对象和类。面向对象技术使软件开发进步迅速,它允许程序员创建可重用的软件组件。对象允许程序员以一种自然的、直观的方式组织程序。本章介绍了基于对象的程序设计基础,如封装、数据抽象和抽象数据类型(ADT)。这些技术隐藏了组件的细节,从而程序员只需注意“大的框架”。我们创建了Time类,它以标准通用的格式显示时间。我们展示了如何用程序集、命名空间和动态链接库(DLL,dynamic-link-library)来创建可重用的软件组件。我们创建了类和名称空间,并且讨论了特性和const关键字。本章为后两章介绍面向对象的程序设计打下了基础。
第6章——面向对象的编程:继承性
在本章中,讨论了继承性——这是一种通过继承已有类(基类)的特性和方法来创建新类(称为派生类)的软件重用形式。继承的类(也就是派生类)还可以有额外的特性和方法。我们展示了如何通过寻找对象类的共性来减少构建大型软件系统所需的工作量。本章给出了查找三层继承关系(Point、Circle和Cylinder类)共性的具体示例,并且通过分析这个具体示例来说明软件重用和良好的编程技术。我们讨论了面向对象程序设计的软件工程的好处。本章还介绍了重要的面向对象程序设计概念,如创建类和扩展类。
第7章——面向对象的编程:多态性
第7章继续介绍面向对象的程序设计。我们讨论了多态程序设计和它的优点。多态性允许以一般的方式来对待类,同样的函数调用可以根据不同接收信息的对象而产生不同的行为(如,发送给鸟和鱼的“移动”信息会导致截然不同的运动类型——鸟在飞而鱼在游)。除了以一般的方式来对待现有的类,多态性还允许将新类很容易地加入到一个系统中。我们需要识别在何种情况下多态性是非常有用的。我们用一个工资系统示例来说明多态性——这个系统根据雇员类型来决定每个雇员的薪水(老板:付固定薪水:计时工人:按小时付工资;销售人员:基本工资加销售提成:计件工人:按生产的每件产品付酬)。这些程序设计技术和前面章节中介绍的技术让程序员能够创建可扩展和重用的软件组件。
第8章——异常处理
从构建任务级和商业级应用程序的观点来看,异常处理是Visual C++.NET的一个重要内容。用户可能输入不正确的数据,数据可能被破坏,客户端可能访问不存在的纪录或受限制的纪录。一个除以零的简单错误就会导致计算程序崩溃,但是如果类似的错误出现在飞机的导航系统上(并且该飞机正在飞行)会出现什么情况呢?在一些情况下,程序故障将带来灾难性的结果。程序员需要知道如何辨认出软件组件中可能会产生的错误(异常)并进行有效的处理,从而使程序不会崩溃并能够处理问题和继续执行。利用其他程序员编写的可重用软件组件来构建软件系统的程序员必须要处理这些组件可能会“抛出”的异常情况。本章详细介绍了MC++异常、异常处理的中断模型、抛出和捕获异常以及FCL类Exception。
第9章——图形用户界面概念:第1部分
第9章介绍了设计图形用户界面的技术。讨论了如何用WindowsForm控件(如标签、按钮、文本框和图形框)来创建用户界面。还介绍了事件,事件是由程序向一个或多个对象发送的消息,指示某个动作已经发生。事件通常用于指明用户与GUI控件间的相互作用,但也可以发出程序内部动作的信号。我们概括了事件处理并讨论了如何处理控件、键盘和鼠标事件。本章还介绍。
了一些帮助编程者创建视觉上吸引人的、组织有序的和一致的GUI的技巧。
第10章——图形用户界面概念:第2部分
第10章介绍了更为复杂的GUI组件,包括菜单、链接标签、面板、列表框、组合框和标签控件。本章介绍了多文档界面(MDl)的程序设计,它允许在一个单独的GUI中同时打开多个文档(如窗体)。我们介绍了可视化继承,它使程序员能够将本章中介绍的GUI概念和第6章中介绍的面向对象概念结合起来开发用户界面,所开发的界面可以被其他程序员使用和扩展。本章的结尾讨论了如何创建用户自定义的控件。
第11章——多线程
我们希望应用程序能做很多的事。希望从Intemet上下载文件、听音乐、打印文件和浏览Web——所有这些都是同时进行的。为了达到这个目的,我们需要称为多线程的技术,该技术允许应用程序能够并发执行多个任务。MC十十允许程序员访问FCL提供的多线程类,而程序员不需要知道其中的复杂细节。与其他不具有多线程特性的语言相比,MC++能更好地处理复杂的多媒体应用程序、网络应用程序和多处理器应用程序。本章概括了FCL中的线程类,并介绍了线程、线程生命周期、时间片、线程调度和优先级。我们分析了生产者-消费者的关系、线程同步和环状缓冲区(circularbuffer)。本章为创建令人难忘的多线程程序打下了基础,这些程序都是客户端所需要的。
第12章——字符串,字符和正则表达式
在本章中,我们讨论了字、句和字符集合的处理。在MC++中,字符串(字符的集合)是String*类型的对象。这也是MC+十强调面向对象程序设计的另一个优点。String*类型的对象包含了复制、查找、提取子串和连接字符串的方法。我们介绍了StringBuilder类,该类定义了类似字符串的对象,这些对象在初始化后可以被修改。我们创建了一个洗牌和发牌的模拟程序作为字符串的一个有趣示例。还讨论了正则表达式,这是一个查找和处理文本的强有力工具。
第13章——图形和多媒体
在这一章中,讨论了GDI+(图形设备界面GDI的一种扩展),它是提供.NET应用程序使用的图形特性的Windows服务。GDI+的扩展图形能力能够更直观和有趣地创建和使用程序。我们讨论了Visual C++.NET中对图形对象和颜色控件的处理。还讨论了如何画圆弧、多边形和其他形状。本章还解释了如何使用各种笔和刷来创建颜色效果,并且使用了一个演示渐变色填充和纹理的示例。还介绍了一种将纯文本应用程序调整为令人赏心悦目的应用程序的技术,即便是新手也能轻而易举地编写出这种程序。本章的第2部分重点介绍了音频、视频和语音技术。我们讨论了将声音、视频和动画人物插入程序中(主要通过现有的音频和视频片断)。您会发现将多媒体加入Visual C++.NET程序中是一件很容易的事。本章介绍了一种可以将交互动画人物插入程序中的技术,称为MicrosoftAgent。每一个人物都允许用户和应用程序以一种更为自然的人类通信技术(如语言)来进行交互。代理人物对鼠标和键盘事件做出响应,并且说话和倾听(也就是说,它们支持语音合成和语音识别)。由于具有了这些能力,应用程序可对用户说话,并对他们的语言命令及时做出响应。
第14章——文件和流
设想一个不能将数据存入文件的程序。一旦程序被关闭,所有程序执行的工作将会永远消失。因此,对开发商务应用程序的程序员而言,本章是一个重点。我们介绍了用FCL类来输入和输出数据。本章通过一个具体示例来解释这些概念。这是一个允许用户从文件中读取银行账户信息,并且将银行账户信息写入文件中的示例。我们介绍了有助于执行输入、输出操作的FCL类和方法——它们展示了面向对象程序设计和重用类的能力。我们讨论了顺序文件、随机存取文件和缓冲的优点。本章为第18章中的内容打下了基础。
第15章——可扩展标记语言
可扩展标记语言(XML)起源于1986年成为行业标准的SGML(StandardGeneralizedMarkupLanguage)。尽管SGML用于在全球范围内发布应用程序,但鉴于它的实际大小和复杂性,SGML未能融入主流的程序设计团体中。XML是为了让类似于SGML的技术可被更广泛使用而做的一个尝试。W3C所创建的XML以可移植的格式来描述数据。XML与诸如HTML的标记语言在概念上就不相同。诸如HTML的标记语言仅仅描述了如何在一个浏览器上显示信息。XML是一种为任何类型的信息创建标记语言的技术。文件作者使用XML创建全新的标记语言,并使用这种标记语言来描述特殊的数据类型,包括数学公式,化学分子结构,音乐和配方等。用XML创建的标记语言包括XHTML(ExtensibleHyperTextMarkupLanguage,用于Web内容)、MathML(用于数学领域)、VoiceXMLIN(用于语音)、SMILI’M(SynchronizedMultimediaIntegrationLanguage, 用于多媒体演示)、CML(Chemical Markup Language, 用于化学领域)和XBRL(ExtensibleBusinessReportingLanguage,用于金融数据交换)。XML的可扩展性使它成为今天工业领域中最重要的技术之一,它被集成到几乎所有的领域中。公司和个人会经常发现XML的新用途。在这一章里,我们举例说明了使用XML标记数据的基础知识,还演示了XML派生出的几种标记语言,如XML模式(用于检查XML文件的语法)和XSLT(ExtensibleStylesheetLanguageTranslations,用于将XML文件的数据转换为其他纯文本格式,如XHTML)(我们为不熟悉XHTML的读者准备了附录E和F,这两个附录详细介绍了XHTML)。
第16章——数据库、SQL和ADO.NET
数据存储和访问是创建功能强大的软件应用程序所不可缺少的。本章讨论了.NET对数据库操作的支持。今天,最流行的数据库系统是关系数据库。在本章中,我们介绍了关系数据库中执行查询操作的结构化查询语言(SQL,StructuredQueryLanguage),并且还介绍了ActiveXDataObiects(ADO.NET)——能够让.NET应用程序访问和操作数据库的ADO的扩展。ADO.NET允许数据作为XML导出,它能够让使用ADO.NET的应用程序与能够理解XML的各种程序进行通信。我们向读者展示了如何创建数据库连接以及如何使用ADO.NET类来查询数据库。
第17章——Web服务
前面的章节介绍了如何创建仅在用户计算机上执行的应用程序。在这一章中,介绍了Web服务。Web服务是一些能够通过Internet、内部网和外部网向客户端开放服务(方法)的程序。Web服务允许不同平台上的服务无缝地相互作用,从而提供了增强的软件重用能力。我们讨论了.NETWeb服务的基础知识和相关技术,包括简单对象访问协议(SOAP)和ASP(动态服务器页,Active ServerPages).NET。本章提供了一个处理巨大整数(一直到100位)的Web服务的有趣示例。还给出了一个演示会话跟踪的21点游戏(Black Jack)应用程序。会话跟踪是一种使应用程序能够“识别”用户的个性化形式。我们在本章结尾讨论了Microsoft的全局XMLWeb服务体系结构(GXA),这是一系列向Web服务开发者提供了额外能力的规范。
第18章——网络连接:流式套接字和数据报
第18章介绍了流式网络连接的基础技术。说明了流式套接字如何使程序员可以隐藏许多网络连接的细节。通过利用套接字,程序员进行网络连接将如同读写文件般简单。我们还介绍了数据报。通过利用数据报,可以在程序间发送信息包。每一个包都包含了接收方的地址,它们被发送到网络上去,而网络则将包沿着某一条路线发送到目的地。本章的例子注重于应用程序间的通信。一个例子演示了用流式套接字在两个MC++程序间通信。另一个相似的例子则在两个应用程序间发送数据报。我们还展示了如何创建能在多个客户端间并行通信的多线程服务器应用程序。在这个客户端/g艮务器的井字游戏(“c-tac-toegame)中,服务器维持着游戏的状态,而客户端则通过和服务器通信来玩这个游戏。
第19章——数据结构和数据集合
本章介绍了将数据排列成链表、堆栈、队列和树的集合体。从排列元素到记录函数调用,每一个数据结构都有用于多种应用程序的属性。我们讨论了如何构建每一种数据结构。这对构思有用的类是非常有价值的经验。另外,我们还涉及了FCL中预建的集合类。这些类储存数据集或集合,并提供了排列、插入、删除和检索数据项的功能。不同的集合类用不同的方法存储数据。本章注重于Array、ArrayList、Stack和Hashtable类,并讨论了每一个类的细节。如果可能,MC+十程序员应该使用FCL来寻找合适的数据结构,而不要自己构造这些数据结构。本章强化了在第5-7章中讨论的许多面向对象技术,包括类、继承和组合(composition)。
第20章——可访问性
万维网给残疾人带来了挑战。多媒体网站很难由文本阅读器和其他程序进行解释;因此,听力和视力受损者在浏览这些网站时会遇到困难。为了改善这种情况,W3C发布了Web可访问性措施(WAI,WebAccessibilitylnitiative),该措施提供了让残疾人能够访问网站的指导方针。本章叙述了这些方针,如使用headers元素来使网页阅读器更容易访问表,使用img元素的alt特性来描述图像,以及联合使用XHTML和CSS以确保网页可在所有显示器上显示或被所有的阅读器读取。我们举例说明了VisualStudio.NET、InternetExplorer 6.0和WindowsXP中主要的可访问性特性。还介绍了VoiceXML和CalIXML这两种增强网页内容可访问性的技术。VoiceXML帮助视力损伤者通过语音合成和语音识别来访问万维网。CallXML允许视力损伤者通过电话访问网页内容。
第21章——VisualC++.NET的非托管代码介绍
本章介绍了VisualC++.NET中非托管方面的知识。强调了托管代码和非托管代码的区别,讨论了非托管代码如何适应Microsoft.NET策略,并且推断了非托管代码可能的未来。另外,还讨论了新的统一事件模型(UnifiedEventModel),该模型提供了处理VisualC++.NET事件的简化语法。本章介绍了对非托管代码的改进,即增加了对ANSI/ISO标准的兼容性,以及对本地代码宽字符和64位处理的支持。本章有一个例子展示了新编译器的特点,即提供了程序进入本地代码调试模式的运行时检查。学习本章(以及22-25章)需要具备标准C柑(包括指针)的知识。
第22章——ATL/GOM中的特性化编程
特性化程序设计是VisualC+十.NET的一个新特性,它在COM开发领域中可用于简化通用程序设计任务。在这一章中,讨论了特性如何简化COM和ATL。本章是针对具备旧COM和ATL知识的开发者,并且用来说明COM中特性化程序设计的功能。尽管特性能简化COM开发,但对COM基础知识的可靠理解是正确使用特性所必需的。本章的例子示范了基本COM组件的创建和COM中的统一事件模型,并且包含了一个演示特性化ATLActiveX控件的案例研究。
第23章——ATL服务器Web应用程序
在这一章中,讨论了如何用ATL服务器创建基于Web的应用程序。这种技术可以提供与本地代码执行相结合的快速Web应用程序开发。ATL服务器是一种用本地上下文创建动态Web内容的技术。服务器响应文件(SRF,ServerResponseFile)使用与HTML标识相结合的替代标签(或模板)提供了动态内容。ATL服务器Web应用程序用本地C+十生成的HTML动态替换SRF模板。本章介绍了许多有趣的例子,其中包含了一个在线来宾登记簿应用程序,以及——个允许用户在数据库中查寻特定作者出版物的多层且大量使用数据库的应用程序。
第24章——托管和非托管代码的互操作性
本章主要介绍了托管代码和非托管代码的区别,以及用于克服这些区别的技术,从而可使代码上下文互操作。与其他的.NET语言不同,VisualC++.NET允许在同一个应用程序中并行执行托管代码和非托管代码。这种可能性由把执行分离到一个托管和非托管的上下文与管理上下文间所有通信而产生。VisualC++.NET的互操作性特性可以分成三种技术,IJW(nJustWorks)编译器设计目标、平台调用服务(Platform lnvoke Service)和COM互操作性服务(COM InteropService)。本章讨论了IJW和平台调用服务,而第25章讨论了COM的互操作性特性。本章包含了一组用来示范通用互操作性使用的例子,如使用Win32API函数和模板类。
第25章——COM互操作性服务
这一章概括了Visual C++.NET提供的服务,这些服务允许COM和.NET体系结构间的互操作。从数据类型的表示和对象的创建到各自组件库的描述和布局,COM和.NET组件体系结构均是原理上完全不同的技术。COM互操作性服务使.NET程序员能够绕过这些困难,并使两种组件体系结构能无缝地相互通信。本章示范了类型库和程序集转换,讨论了运行库可调用包装器(RCW,RuntimeCallableWrapper)和COM可调用包装器(CCW,COMCallableWrapper),
并提供了展示.NET中COM对象和COM中.NET对象的例子。
附录A——运算符优先级表
本附录列出了MC++的运算符和它们的优先级。
附录B——数字系统
本附录解释了二进制、八进制、十进制和十六进制数字系统,回顾了在这些基数间的数字转换,并阐述了在每一种基数下的数学运算。
附录C ASCII字符集
本附录包含了一个表格,表格中是128个ASCII(American Standard Code for lnfomation Interchange,美国标准信息交换码)符号(按字母顺序排列)和对应的整数值。
附录D——Unicode
本附录介绍了统一编码标准(Unicode Standard)。这是一种将惟一的数字值分配给世界上大部分语言的字符的编码方案。我们列举了使用Unicode编码打印出几种语言的欢迎信息的应用程序。
附录E和F XHTML介绍:第1部分和第2部分
在这两个附录中,介绍了可扩展超文本标记语言(XHTML)。XHTML是一种替代HTML的新兴W3C技术,它是描述Web内容的主要方式。作为以XML为基础的语言,XHTML比HTML更稳健,并且更具可扩展性。XHTML包含了HTML的大部分元素和特性——这些是这两个附录的主要内容。附录E和F是为不知道XHTML或在学习第15章“可扩展标记语言”和第20章“可访问性”之前希望回顾XHTML的读者准备的。
附录G——XHTML特殊字符
本附录提供了许多经常使用的XHTML特殊字符,称为字符实体引用(character entity
references)。
附录H XHTML颜色
本附录列出了常用的XHTML颜色名称和对应的十六进制值。
附录I——位操作
本附录讨论了Visual C++.NET强大的位操作能力。这有助于程序更简洁地处理位串、合并或拆分单个的位和更紧凑地存储信息。这些能力是低级汇编语言的特点,并受到编写系统软件(如操作系统和网络软件)的程序员的重视。