第1章VisualC++集成开发环境VisualC++自诞生以来,因其易用性和良好的用户界面,一直是Windows环境下最主要的开发工具。VisualC++集成开发环境是一种可视化编程工具,可以完成各种Windows程序的开发,而且VisualC++强大的调试功能,也为大型复杂的程序开发提供了有效的排错手段。本章将详细介绍VisualC++的安装及集成开发环境。1.1VisualC++的版本VisualC++6.0有三个版本,分别是标准版(Standard,也称作学习版)、专业版(Professional)、企业版(Enterprise)。表1.1列出了三个版本的部分区别,其中X号表示该功能包含在相应的版本中。显然,企业版的功能最强大。在本书中,如果没有明确说明,VisualC++指的是VisualC++6.0企业版。1.2安装VisualC++6.0Microsoft为用户提供了强大的VisualC++6.0集成开发环境,可以使用安装程序进行安装。1.3VisualC++集成开发环境VisualC++6.0开发环境由一套综合的开发工具所组成,提供了良好的可视化编程环境。VisualC++6.0,不仅为用户提供了编辑代码、编译、链接、调试等基本功能,更提供多种辅助开发工具,以使用户的开发过程更简单、方便。对于初学者来说,有必要了解它的一些基本使用方法。1.3.1菜单栏菜单栏是开发环境与用户进行交互的重要组成部分。良好的应用程序需要精心设计、反复调试,VisualC++6.0的菜单为程序设计和调试提供了强大的支持,以帮助程序设计人员与开发人员进行编辑、调试及生成程序。下面对VisualC++6.0的常用菜单项进行详细介绍。1.File菜单2.Edit菜单3.View菜单4.Insert菜单5.Project菜单6.Build菜单7.Tools菜单8.Window菜单9.Help菜单1.3.2工具栏虽然使用菜单命令可以完成所有的工作,但是使用它时往往需要单击多下鼠标,而记忆所有的快捷键又相当困难,所以使用菜单命令效率不是很高。而工具栏是一种图形化的界面,即直观又快捷,使用工具栏将大大简化用户的操作,以提高工作效率。本节将对VisualC++6.0中的工具栏进行详细介绍。1.标准工具栏2.BuildMiniBar工具栏3.Debug工具栏1.3.3工作区窗口在进行Windows应用程序开发过程中通常用到许多源代码、菜单、工具栏、对话框、图标等资源文件。用户可以通过项目工作区窗口显示、修改、添加、删除这些文件。同时,项目工作区可以管理多个项目。1.ClassView视图2.ResourceView视图3.FileView视图1.3.4输出窗口为了方便用户编译和调试程序,VisualC++集成开发环境为用户提供了输出窗口,输出窗口主要用于显示编译和调试结果等,用户可以方便地查看各种编译和调试信息。输出窗口有6个选项卡,各选项卡及其包含的意义如表1.16所示。1.4编写第一个程序HelloWorld对VisualC++开发环境有了一定认识后,在本节开始将编写一个最简单的程序,以使读者对VisualC++编程环境有更深的认识。1.4.1创建HelloWorld工程在VisualC++6.0中工程(Project)是应用程序开发的基本单位,工程的是实质是一些相互关联的文件。对于一个应用程序来说,其所有的代码和资源都是放在工程中。在这里,读者先不必过于关注工程的具体概念,随着学习的深入会逐渐明白。1.4.2编译并执行程序应用程序框架创建完成后,还需要对其进行编译。具体做法是:选择【Build】|【BuildHelloWorld.exe】命令来编译程序。编译完成后,执行【Build】|【ExecuteHelloWorld.exe】命令,以执行程序。程序运行结果如图1.26所示。1.5小结本章主要介绍了VisualC++的主要版本,以及如何安装VisualC++6.0集成开发环境。通过创建HelloWorld的实例,让读者对VisualC++有一个感性的认识。通过本章的学习,读者应当了解VisualC++的发展历程、了解VisualC++集成开发环境的安装、熟悉VisualC++开发工具菜单和工具栏等。第2章使用VisualC++创建基本应用程序VisualC++作为一种程序设计语言,它同时也是一个集成开发工具,提供了可视化的编程功能。通过第1章的学习,读者已经了解了VisualC++开发环境。本章将主要介绍如何使用VisualC++创建各种基本的应用程序。2.1理解VisualC++工程早期开发是直接在命令行中打命令,由于太麻烦,就有了MakeFile这个工具,它定义了一系列的规则来指定哪些文件需要编译、编译方式甚至于进行更复杂的功能操作,来方便程序的开发。但人们还是发现编写MakeFile也很复杂。后来有人开发了IDE(IntegratedDevelopmentEnvironment,集成开发环境)来自动化管理源文件和MakeFile。而“工程”就是指将源文件和MakeFile集中在一起的一种具体实现,是集成自定义的一种文件结构。VisualC++工程是VisualC++集成工作环境定义的一种文件结构。2.2VisualC++中应用程序的类型VisualC++6.0无疑是个强大的开发工具,使用它开发者可以创作出各种各样的应用程序。从整体上看,应用程序可以分为5种类型,分别是控制台应用程序、基于对话框的应用程序、单文档应用程序、多文档应用程序、基于HTML文档的应用程序。本节将对这5种应用程序做详细介绍。2.2.1控制台应用程序控制台应用程序默认情况下没有Windows窗口,而是具有DOS风格的窗口外观。例如在1.4节中创建的HelloWorld应用程序,便是一个控制台应用程序。通常情况下,使用控制台应用程序是为了与早期的DOS程序保持兼容,或是应用程序与用户只有很少的交互。2.2.2基于对话框的应用程序基于对话框的应用程序是所有应用程序中比较简单的一种。用户可以使用基于对话框的应用程序编写一些较小的实用程序。最具代表性的就是Windows自带的计算器,如图2.1所示。它的特点就是规模小,效率高。如果过多的控件塞进基于对话框的应用程序,会使该应用程序既笨拙又难以使用。如果开发者打算在应用程序中添加众多的特性,或者需要用户进行大量的交互操作,那么应考虑选用基于窗口的界面方式。2.2.3单文档应用程序基于单文档(SingleDocumentInterface,SDI)的应用程序,是非常流行的应用程序开发模式。典型的例子就是Windows自带的画图工具,如图2.2所示。单文档应用程序一次处理一个文档,降低了编程的复杂度,减少了运行程序时所需的资源,对某些小型应用可以采用这种类型的窗口应用程序。2.2.4多文档应用程序基于多文档(MultipleDocumentInterface,MDI)应用程序,可以同时打开多个子窗体(或者叫文档),每个子窗体有各自的窗口,而且而子窗体只能在父窗体的范围显示。多文档应用程序中常有包含子菜单的“窗口”菜单项,用于在窗口或文档之间进行切换。2.2.5基于HTML文档的应用程序Internet已经成为许多公司降低成本、提高效率计划的一部分,因此应用程序对Internet的支持变的越来越重要。基于HTML的应用程序是VisualC++6.0新增的应用程序类型,它提供了一种把Internet能力植入应用程序中的方法,它把两种不同的媒体融合成了一个和谐的整体。在基于HTML的应用程序中,用户会看到Web浏览器风格的前端应用。2.3创建应用程序框架本节将讲述如何利用VisualC++创建各种应用程序框架。关于控制台应用程序的创建,在1.4节中已经介绍过,这里只介绍其他4种创建方法。2.3.1创建基于对话框的应用程序基于对话框应用程序常用于编写一些较小的实用程序,如计算器、系统监控程序等,这些程序相对比较简单,与用户交互比较少。2.3.2创建单文档应用程序基于单文档的应用程序是目前非常流行的应用程序开发模式,它可以用于较为复杂的应用程序的开发,与多文档应用程序相比,单文档程序一次只能打开一个文档。2.3.3创建多文档应用程序多文档应用程序可以用于开发更为复杂的应用程序,与单文档应用程序相比,多文档应用程序可以同时打开多个子窗体2.3.4创建基于HTML的应用程序如果开发者想在自己的程序里加入Internet元素,可以使用基于HTML的应用程序,这种应用程序提供了把Internet能力植入应用程序中的方法。2.4小结本章主要介绍了VisualC++工程,以及使用VisualC++创建基本应用程序,通过创建基本应用程序实例,帮助读者加深对VisualC++工程的理解。通过本章的学习,读者应当理解VisualC++工程及其工程文件的意义、掌握各种应用程序框架的创建方法。第3章面向对象程序设计基础随着软件开发规模的扩大,传统的面向过程的软件开发方法给软件的复用、调试、维护带来了很大的困难。为了解决满足软件开发的需求,人们提出了面向对象程序设计(ObjectOrientedProgramming,OOP)的思想。如今面向对象的思想已经深入人心,已经应用到程序设计和软件开发、数据库系统、人工智能等很多领域。本章将详细介绍面向对象程序设计的相关概念。3.1面向过程与面向对象传统的面向过程技术是围绕功能进行,普遍采用过程式或函数式的程序设计方法。面向对象程序设计围绕现实世界的概念来组织模块,采用对象来描述问题空间的实体,用程序代码模拟现实世界中真实或抽象的对象。面向对象程序设计把一个复杂的问题分解成多个能够独立的功能对象,然后把这些对象组合起来去完成复杂问题,每一个对象有可以有许多更小的对象组成。3.1.1面向过程的问题面向过程编程的主要思想是以事件为中心,分析解决问题需要的步骤,然后按照这些步骤来编写函数,使用的时候依次调用这些函数,来完成所有功能。在面向过程开发过程中主要存在以下问题。软件重用性差:通过面向过程编程技术开发出的程序,主要以函数为模块来实现功能,数据和对数据的操作耦合性太高,想利用已有的程序代码开发新的程序时,只能通过简单的复制,然后作大量的修改,这种复用程序代码的效率非常低。软件可维护性差:软件程序越复杂,里面的函数模块越多,多个函数之间的关系就越复杂,维护起来就越困难。开发出的软件很难满足用户不断增长的需求:当客户提出新的需求时,需要修改原有软件的函数模块,需要进行大量的调试,使其满足用户的需求,并且还不会影响其他程序模块,软件的升级和维护非常困难。3.1.2面向对象的特性面向对象编程的主要思想是以事物为中心,它把具体的事物抽象成“对象”的概念,围绕对象进行程序的开发。面向对象的程序设计方法有三大特性:封装、继承、多态。下面将对这三个特性做详细介绍。1.封装2.继承3.多态3.2C++类的基本概念传统的面向过程技术是围绕功能进行,普遍采用过程式或函数式的程序设计方法。面向对象程序设计围绕现实世界的概念来组织模块,采用对象来描述问题空间的实体,用程序代码模拟现实世界中真实或抽象的对象。面向对象程序设计把一个复杂的问题分解成多个能够独立的功能对象(类),然后把这些对象(类)组合起来去完成复杂问题,每一个对象可以由许多更小的对象组成。3.2.1结构体与类在C语言,结构体就是一个可以包含其他类型数据的一种自定义数据类型。C语言中的结构体只能自定义数据类型,不允许有函数。而在C++中对结构体进行了扩展,它可以有成员变量,可以有成员函数,可以从别的类继承,也可以被别的类继承,可以有虚函数。3.2.2类与对象在面向对象的概念中,有两个最基本的概念:类和对象。对象是组成程序的构件,所有的数据分别属于不同的对象。具有相同或相似性质的对象的抽象就是类。简而言之,类是对象的抽象,对象是类的具体化。1.对象2.类3.2.3类的声明、定义和实现类是面向对象编程的基础,它是用户自定义的数据类型。在C++中,类像结构体一样也定义了数据类型和