内容简介: 本书系编程语言先驱者Ivor Horton的经典之作,是C++编程方面最畅销的图书品种之一,不仅涵盖了Visual C++ 2008编程知识,还全面介绍了标准C++语言和C++/CLI。本书延续了Ivor Horton讲解编程语言的独特方法,从中读者可以学习Visual C++ 2008的基础知识,了解如何使用MFC进行本地ISO/ANSI C++ Windows应用程序开发以及如何使用Windows Forms进行C++/CLI Windows应用程序开发,并全面掌握在MFC和Windows Forms中访问数据源的技术。此外,本书各章后面的习题将有助于读者温故而知新,并尽快成为C++高效程序员。本书学习目标◆ 使用标准模板库(STL)来组织和操作本地C++程序中的数据◆ C++程序调试技术◆ 构造Microsoft Windows应用程序的技术以及每个应用程序的基本元素◆ 创建和使用常用控件构建应用程序的图形用户界面◆ 使用MFC开发库◆ 访问数据源的不同控件、控件的工作方式以及定制控件的方法本书读者对象 本书适用于想学习如何为Windows操作系统编写C++程序的初学者,学习本书内容无需任何编程基础。本书源代码及习题答案下载 http://www.tupwk.com.cn/downpage
欢迎使用本书。通过学习本书,您可成为优秀的C++程序员。Microsoft公司的最新开发系统Visual Studio 2008支持两种截然不同但又紧密相关的C++语言。该系统完全支持原来的ISO/ANSI标准C++,同时还支持名为C++/CLI的新版C++。C++/CLI由Microsoft公司开发,现在是ECMA标准。这两种C++版本互为补充,各自完成不同的任务。ISO/ANSI C++用于开发在本地计算机上运行的高性能应用程序,而C++/CLI专门为.NET Framework开发。本书将讲述使用这两种C++版本开发应用程序的基础知识。 当编写ISO/ANSI C++程序时,我们可以从自动生成的代码中获得大量帮助,但仍然需要亲自编写大量C++代码。我们不仅需要对面向对象的编程技术有扎实的理解,而且需要充分了解Windows编程所涉及的方方面面。C++/CLI虽然针对.NET Framework开发,但同时也是Windows Forms应用程序开发的载体。开发Windows Forms程序经常只需要编写很少的代码,有时甚至不用编写代码。当然,当必须给Windows Forms应用程序添加代码时,即使这部分代码只占到代码总量的很小比例,也仍然要求我们有较多的C++/CLI语言的知识。ISO/ANSI C++仍然是许多专业人员选用的语言,但C++/CLI和Windows Forms应用程序带来的开发速度使得C++/CLI也成了基本的语言。因此,笔者将在本书中介绍这两种C++语言的基本内容。 0.1 本书读者对象 本书讲授如何使用Visual C++ 2008或Visual Studio 2008的任何版本,编写在Microsoft Windows操作系统下运行的C++应用程序。阅读本书不需要预先具备任何特定编程语言的知识。如果属于下列4种情形之一,那么您就适于学习本教程: ● 具备少量其他语言的编程经验,如BASIC;渴望学习C++,并想提升实际的Microsoft Windows编程技能。 ● 有一些使用C或C++语言的经验,但使用环境不是Microsoft Windows;希望使用最新的工具和技术,扩充在Windows环境下编程的技能。 ● 有一些C++知识,希望扩展C++技能,成为会使用C++/CLI的编程人员。 ● 属于编程新手,十分渴望投入编程世界,并最终掌握C++。要取得成功,您至少需要对计算机的工作原理有透彻的理解——包括内存的组织方式以及数据和指令的存储方式。 0.2 本书主要内容 本书使用Visual C++ 2008支持的两种技术,讲授C++编程的基础知识。详细介绍了两种风格的C++语言,使用Microsoft基本类(Microsoft Foundation Classes,MFC)开发本地的ISO/ANSI C++ Windows应用程序,使用Windows Forms开发C++/CLI Windows应用程序等知识。 由于数据库技术在今天的重要性和普遍性,本书还介绍了可用于在MFC和 Windows Forms应用程序中访问数据源的技术。与Windows Forms应用程序相比,MFC应用程序相对来说属于编码密集型程序,原因是前者的创建过程使用了Visual C++ 2008中的高级设计功能,可以以图形方式组装应用程序的整个图形用户界面(GUI),并使所有代码自动生成。因此,本书把较多的篇幅给予了MFC编程,而非Windows Forms编程。 0.3 本书结构 本书内容的结构安排如下: ● 第1章介绍使用C++编写本地应用程序和.NET Framework应用程序所需要理解的基本概念,以及在Visual C++ 2008开发环境中体现的主要思想。还叙述了如何使用Visual C++ 2008的功能来创建本书其余部分要学习的各种C++应用程序。 ● 第2~9章专门讲授两种C++语言版本,还讲述了调试过程中涉及的基本概念和技术。第2~9章内容的组织方式都相似:各章的前半部分讨论ISO/ANSI C++主题,后半部分讨论C++/CLI主题。 ● 第10章介绍如何使用标准模板库(Standard Template Library,STL)。STL是一组功能强大且全面的工具,用来组成和操作本地C++程序中的数据。由于STL是独立于应用程序的,因此我们可以在上下文中大量应用它。第10章还介绍了Visual C++ 2008新增的STL/CLR。它是C++/CLI应用程序的STL版本。 ● 第11章介绍了在C++程序中查找错误的技术。 ● 第12章讨论Microsoft Windows应用程序的组织方式,并描述和展示了在所有Windows应用程序中都存在的基本元素。本章解释了以ISO/ANSI C++语言编写的、使用Windows API和MFC的Windows应用程序示例,还给出了一个使用C++/CLI语言编写的Windows Forms应用程序基础示例。 ● 第13~18章详细描述了MFC提供的构建GUI的功能以及如何在程序中针对.NET Framework使用等价的工具。我们将学习如何创建并使用通用控件来构建应用程序的图形用户界面,还将学习如何处理因用户与程序的交互作用而产生的事件。在此过程中,我们将用本地C++创建一个具有相当规模的应用程序,并用C++/CLI创建一个本质上与C++程序功能相同的程序。除了学习构建GUI的技术以外,我们还将从开发该应用程序的过程中学到如何使用MFC来打印文档,以及如何在磁盘上保存文档。 ● 第19章讲述为使用MFC创建自己的库而需要知道的基本知识。我们将了解可以创建的不同种类的库,还将开发能够与前6章开发的应用程序协同工作的示例。 ● 第20、21两章讲述如何在MFC应用程序中访问数据源。我们首先介绍在只读模式中访问数据库的经验,然后再学习使用MFC更新数据库的基本编程技术。这两章的示例使用了从Web上下载的Northwind数据库,但我们也可以把这两章描述的技术应用于自己的数据源。 ● 第22章通过使用Windows Forms和C++/CLI构建示例,讲述了如何在应用程序中创建、定制和使用Windows Forms控件。通过贯穿本章构建的另一个完整的应用程序,我们将获得一定的实践经验。 ● 第23章以第22章讲述的知识为基础,演示了可用来访问数据源的控件的工作原理,并讲述了定制这些控件的方法。我们还将学习如何在不编写任何代码的情况下,创建能够访问数据库的应用程序。 本书各章内容都包括许多示范所讨论的编程技术的示例。每章结束的“小结”部分总结了该章所讲述的要点,大多数章都在最后给出了一组练习题,您可以应用所学的技术来试着解答这些练习题。练习题的答案连同书中的所有代码都可以从Web站点上下载(参见后面的“源代码”部分了解详细情况)。 关于C++语言教程使用的示例都是使用简单的命令行输入和输出的控制台程序。这种方法使我们能够在不陷入复杂的Windows GUI编程的情况下,学习C++的各种功能。实际上,我们只有在对编程语言有了透彻理解之后,才能进行Windows 编程。 如果希望使学习过程尽可能简单,您最初可以只学习ISO/ANSI C++编程。讲授C++语言的各章(第2~9章)都是首先讨论特定方面的ISO/ANSI C++功能,然后再讨论C++/CLI在相同的上下文中引入的新功能。以这种方式组织各章内容的原因在于,C++/CLI是作为ISO/ANSI标准语言的扩充定义的,因此对C++/CLI的理解是以对ISO/ANSI C++的理解为基础的。因此,您可以只阅读第2~21章中的ISO/ANSI主题,而忽略后面的C++/CLI部分。然后可以继续学习使用ISO/ANSI C++的Windows应用程序开发部分,而免去记住两种语言版本的苦恼。在熟悉了ISO/ANSI C++之后,您可以回头重新学习C++/CLI。当然,您也可以逐章进行学习,从而同步增加这两种C++语言版本的知识。 0.4 使用本书的前提 为了使用本书,您需要拥有Visual Studio 2008 Standard Edition、Visual Studio 2008 Professional Edition或者Visual Studio 2008 Team System。注意,Visual C++ Express 2008因不包括MFC而不能胜任。 Visual Studio 2008要求操作系统是Windows XP(x86或x64) Service Pack 2或更高版本,Windows Server 2003 Service Pack 1或更高版本,或者Windows Vista除Starter Edition之外的版本。为了安装上述3种Visual Studio 2008版本,您的计算机需要有1 .6GHz的处理器,至少要有384MB的内存(Windows Vista至少需要768MB),硬盘驱动器上至少需要有2.2GB的可用空间。为了安装随产品提供的完整MSDN文档,您在安装驱动器上需要有额外的1.8GB可用空间。 书中的数据库示例使用了Northwind Traders数据库。通过在上搜索“Northwind Traders”,可以找到该数据库的下载链接。当然,您可以把相应的示例改编成使用其他数据库。 最为重要的是,为了使本书发挥最大功效,您需要有学习的愿望和掌握目前最强大的Windows应用程序编程工具的决心,需要有输入和完成所有示例以及完成书中所有练习题的决心。这些要求听起来比较难,而实际上不然,您会惊讶于自己在相对较短的时间内就能达到的成就。记住,每一个学习编程的人都会不时陷入困境,但只要坚持不懈,错综复杂的问题必将变得越来越清晰,而您最终必将走出困境。本书将帮助您开始独立的实践,并由此成为成功的C++程序员。 0.5 使用Windows Classic主题 如果您在Windows Vista系统下使用Visual Studio 2008,可能会注意到视图看起来令人惊异。Aero Glass界面提供的透明效果看第一眼时(甚至以后看了多眼后仍然)是非常惊人的。当您添加了Vista提供的所有视觉效果后,可能会奇怪怎么有人会拒绝这么好的环境呢?然而,当您注视窗口几个小时后,会发现它的显示使您眼花缭乱,您可能宁可设置不那么令视觉疲劳的界面。更重要的是,您可能注意到用这个产品时会使系统速度大大下降,因为所有这些视觉花样(eye candy)抢夺了系统的重要处理周期。 视觉花样当然是好的,但是在写了一整天的代码后按时回家不更好吗?这是本书使用Windows Classic主题显示Visual Studio 2008窗口的原因之一。另一个原因是,如果我们仍然使用Windows XP,那么奇特的Vista窗口对您就意义不大了。Windows Classic主题是这两种操作系统的公共主题,因此无论您用的是哪种操作系统它总是适用的,而且肯定比Aero Glass界面对眼睛更好。 如果您使用的是Vista,那么建议尝试一下Vista提供的各种主题,看看它们有没有在您的机器上生效。然而,如果您愿意在Vista中使用本书所用的主题,可以采用下面的步骤来设置。 (1) 右击Desktop并从上下文菜单中选择Personalize。出现的Personalize窗口如图0-1所示。这个窗口提供对获得Windows Classic视图需要的所有显示设置的访问权限。 (2) 单击Theme以显示Theme Settings对话框,如图0-2所示。 图 0-1 (3) 在Theme栏中选择Windows Classic,并单击OK按钮。这时,您的显示将与笔者的非常相像。当然,您仍然需要处理那些特效。下面几步将去除特效。 (4) 关闭Personalize窗口。 图 0-2 (5) 打开Control Panel中的System applet,显示System窗口,如图0-3所示。 图 0-3 (6) 单击Advanced system settings,显示System Properties对话框的Advanced选项卡,如图0-4所示。 图 0-4 (7) 单击Performance区域中的Settings按钮,显示Performance Options对话框,如图0-5所示。 (8) 像图0-5中那样选中Adjust for best performance单选按钮。单击OK按钮两次关闭对话框。这时,您的系统就调整为与笔者使用相同的视图,也具有了最佳图形化性能。 您可能也想通过Classic Start菜单来更轻松地定位应用程序和执行其他任务。为了配置系统提供Classic Start菜单,右击任务栏并选择Properties。选择Start菜单项,再选择Classic Start菜单项,并单击Customize进行所有必需的自定义,然后单击OK按钮。您现在就有了使用Visual Studio的最佳环境了。 当然,如果使用的是Windows XP,并希望屏幕图像看起来如本书中所示,也可以在这里使用Classic主题。只要在Windows桌面上右击,从弹出的菜单中选择Properties选项,就会显示图0-6所示的对话框。 图 0-5 图 0-6 在Display Properties对话框的Themes选项卡上,从主题下拉列表中选择Windows Classic。单击OK按钮,就可以使用该主题了。 0.6 源代码 在练习本书中的示例时,读者可以手动输入所有的代码,也可以使用本书提供的源代码文件。本书中的所有源代码均可在或http://www.tupwk.com.cn/downpage站点下载。登录到站点,使用Search工具或书名列表就可以找到本书。在显示本书详细内容的页面上单击Download Code链接即可获取源代码。 注意: 由于很多图书的书名都很类似,因此通过ISBN查找是最简单的。本书英文版的ISBN号是978-0-470-22590-5。 在下载源代码之后,只需使用自己喜欢的解压缩工具对其进行解压缩即可。另一个途径是访问Wrox代码下载主页面/dynamic/books/download.aspx,这里有本书及其他所有Wrox图书的源代码。 0.7 勘误表 我们尽最大努力确保本书在叙述和代码中没有错误。然而,错误总是难免的。如果读者在本书中发现什么错误,例如拼写错误或代码错误,我们将非常感谢您能反馈给我们。通过将错误添加到勘误表中,您也许能帮其他读者节约数小时的时间,也可以帮助我们提供更高质量的图书。 请给wkservice@vip.163.com发电子邮件,如果您的意见是正确的,我们将在本书的后续版本中采用。 要找到本书的勘误表,可以登录,搜索本书的书名或者使用书名列表。然后,在本书的详细内容页面上,单击Book Errata链接。在这个页面上读者可以查看到所有已提交的、由Wrox的编辑发布的错误信息。也可以在页面找到一个完整的书名列表,这个列表包含了每本书的勘误表链接。 0.8 如果想参与讨论,可以加入P2P论坛,网址是。这个论坛是基于Web站点的系统,其作用是让读者发布与Wrox的图书和相关技术有关的消息,并与其他读者和技术用户交流。该论坛提供订阅功能,当有读者感兴趣的主题发布时,论坛会通过电子邮件把这些消息发送给读者。Wrox的作家、编辑、其他行业专家及和您一样的读者都会到该论坛探讨一些问题。 在中,读者将找到很多不同的论坛,这些论坛不仅能帮助读者阅读本书,还可以帮助读者开发自己的应用程序。要加入这些论坛,可按如下步骤操作: (1) 登录并单击Register链接。 (2) 阅读使用协议并单击Agree按钮。 (3) 填写加入论坛所必需的信息和可选信息并单击Submit按钮。 (4) 读者将收到一封电子邮件,该邮件告诉读者怎样验证账户并成功加入。 注意: 不加入P2P论坛也可以阅读该论坛上的信息,但是如果希望发布自己的消息,则必须加入该论坛。 加入之后,就可以发布新消息或者回复其他用户发布的消息了。可以在任何时间阅读Web站点上的消息。如果希望某个论坛能将最新的消息通过电子邮件发送给您,则可以单击论坛列表中该论坛名称旁边的Subscribe to this Forum图标。 要获得如何使用P2P论坛的更多信息,可以阅读P2P FAQ列表中的问题及其答复,这些问题与论坛软件的工作原理及很多与P2P和Wrox图书相关的常见问题有关。要阅读FAQ,可以单击任意P2P页面上的FAQ链接。