研发二部2015年6月杭州长川科技股份有限公司新员工入职培训之MFC编程基础杭州长川科技股份有限公司第一部分基础知识杭州长川科技股份有限公司1.MFC的英文全称是MicrosoftFoundationClasses,即微软的基础类库。MFC的本质就是一个包含了许多微软公司已经定义好的对象的类库。2.虽然开发人员要编写的程序在功能上各有不同,但是从结构上讲,都可以化分为对用户界面的设计、对文件的操作、对数据库的访问及对多媒体的使用等一些最主要的方面。这一点正是微软提出MFC类库最重要的原因。3.在MFC类库中,大约有200个类。在进行程序设计时,只需简单地调用已有的类及类中的方法即可。另外,还可以利用“继承”方法从已有类中派生出自己想要的类。这时,派生出来的类不但拥有父类中的方法和属性,还可以根据自己的需求,自定义一些特殊的属性和方法,使得派生类功能更加强大。MFC有较好的移植性,可应用于众多平台MFC概述MFC类库结构MFC中类可划分为基类、应用程序结构类、窗口类、OLE类、数据库类等10大类,而且在其中的一些大类的基础上又派生出许多子类。MFC的类库结构的层次图如下图所示。MFC类库结构从上图中可以看出,CObject是一个原始基类。绝大多数MFC类的最终基类都是CObject。原始基类下面,主要包括以下几种类:MFC应用程序结构类,窗口、对话框和控件类,输出(设备文本)和绘图类,简单数据类型类,数组、列表和映射类,文件和数据库类,Internet和网络类,OLE类以及高度和异常类。MFC的应用程序结构类分为CWinApp和CWinThread。使用MFC创建的每一个应用程序都包含一个由类CWinApp派生而来的应用程序对象。该对象是一个全局对象。应用程序对象主要用于处理应用程序的初始化,同时也处理应用程序事件的消息循环。CCmdTarget和CCmdUI为MFC中常用的有关发送命令的类。CDocument为MFC中常用的应用程序文档的基类。CDocTemplate为文档模版类,通常是应用程序的单文档或多文档的基类。CView类是常用的视图类。C++语言基础要使用VisualC++进行Windows应用程序的开发,就要掌握面向对象的思想和C++语言。本章先讲述一个简单的C++程序,然后根据这个程序,向读者介绍C++中语言基础。C++的基本数据类型及数据数据类型是对数据的一种抽象描述。在计算机程序中能操作的数据有很多种,不同的数据所需要的存储空间有所不同。将数据按照类型进行分类,有助于程序员对于存储空间的分配。本节将具体介绍有关C++中的数据及其所属的数据类型。变量变量是一种特殊的标识符,在变量中可以存储数据。变量中存储的数据可以根据程序的需要而改变,因此称为变量。1.定义变量在C++中,使用一个变量必须先定义该变量。C++中定义变量的语法代码如下:定义一个变量需要说明两点,一是变量的类型,二是变量的名称。其中,变量的类型是C++中的数据类型。变量名是用户为变量起的名称。变量C++的变量名由字符及数字等组成。变量名必须满足以下几个条件。变量名只能由字母、数字和下划线(_)组成。变量名必须以字母或下划线开头。变量名不能包含空白字符(换行符、空格和制表符称为空白字符)。变量名不能与保留字名相同。变量名区分大小写。变量2.变量赋值如果想要使用一个变量,就要为其进行赋值。如果没有对定义的变量赋值,VisualC++会为该变量默认一个值。例如,如果是一个int类型的变量且没有赋值,VisualC++将默认其值为0。C++中为变量赋值的方法有两种:一种是在定义变量的同时赋值,另一种是在定义变量后赋值。在定义变量的同时赋值,代码如下:在定义变量后赋值,代码如下:常量常量与变量相反,是一个不随时间和程序变化而变化的值。C++中,常量的命名规则和变量的大体相同。不同的是,常量名称中的字母都为大写。C++中定义符号常量的语法代码如下:例如,在计算圆形面积的时候,经常用到PI。为了避免重复地输入PI的实际取值,而用下面的形式声明PI的取值。这样,在程序中编译时,会将程序中出现的所有字符串PI全部置换成3.14。如果想要修改程序中PI的值,只需在头文件处修改,全部PI的取值都会发生变化。常量C++中定义静态常量的语法代码如下:在C++中,同声符号常量一样,在声明静态常量时,也要对其进行初始化,代码如下:注意:在符号常量中,PI没有类型,不占有存储单元,且容易出错。而在Const常量中,PI有数据类型,并且占有存储单元,有地址,因此可以使用指针指向它。C++的运算符及表达式运算符和表达式是一种程序语言的基础。运算符的作用是操作变量或表达式。C++中的运算符包括赋值运算符、算术运算符、逻辑运算符、关系运算符、位运算符、逗号运算符、条件运算符等。本节将介绍这些运算符及其所组成的表达式。表达式表达式是C++程序中不可缺少的一部分。表达式是由运算符、操作数(变量、常量或函数等)和标点符号,按照一定规则组成的一个有意义的语句。例如:运算符C++中的运算符就是一种符号,该符号可以用于处理数据。平时有数学计算中所使用的“+”、“-”、“×”、“÷”都属于运算符。只是这些运算符在C++中的表现形式可能与日常生活中有所不同。下面将对C++中的运算符作具体介绍。1.赋值运算符赋值运算符是用于为变量或常量指定数值的运算体符。其操作符号为“=”,示例代码如下:上述表达式的意义是,把b的值赋值给a。其中,b可以是一个单纯的变量,也可以是一个表达式。运算符2.算术运算符算术运算符是用于进行数学运算的运算符。例如,加、减、乘、除等就是算术运算符。操作完成后,返回一个数字型的值。算术运算符包括加法运算符(+)、减法运算符(-)、乘法运算符(*)、除法运算符(/)、模运算符(%)。上述算术运算符都是二元运算符,该运算符两端的数据必须是数字。运算符3.逻辑运算符逻辑运算符,即用于处理逻辑值的运算符。逻辑运算符通常用在条件判断语句或循环语句中,如if、while语句等。C++中的逻辑运算符包括逻辑与运算符(&&)、逻辑或运算符(||)、逻辑非运算符(!)。由逻辑运算符构成的表达式,称为逻辑表达式。逻辑表达式的返回值为逻辑值(true或false),一般情况下,1代表true,0代表false。逻辑与运算符可以进行与操作,其操作方法为:如果逻辑与运算符前的数为false(或是可以得出false的逻辑表达式),则返回false,否则返回true;当逻辑与运算符前后两个数都为true时,才返回true。逻辑或运算符可以进行或操作,其操作方法为:只要逻辑或运算符前后的数据中有一个为true(或是可以得出true的逻辑表达式),则返回true;当逻辑或运算符前后两个数都为false时,才返回false。逻辑非运算符要求要操作的数据必须是逻辑值,或是能够转换成逻辑值的逻辑表达式。逻辑非运算符可以进行非操作,其操作方法为:如果要操作的数据为true,则返回false;如果要操作的数据为false,则返回true。运算符4.关系运算符关系运算符,即用于比较两个数据关系大小的运算符,并根据比较的结果返回一个逻辑值。关系运算符包括大于运算符()、大于等于运算符(=)、小于运算符()、小于等于运算符(=)、等于运算符(==)以及不等于运算符(!=)。5.条件运算符条件运算符,即用于条件判断的运算符。其构成的表达式格式为:其中,如果表达式1的值为非0,则执行表达式2;如果表达式1的值为0,则执行表达式3。运算符6.特殊运算符C++中还提供了一些特殊的运算符,如++、--、+=、-=等。C++的语句控制C++中的控制语句主要用于完成分支结构程序和循环结构程序的控制。其主要包括以下9个控制语句:if~else语句、switch语句、for语句、while语句、do~while语句、continue语句、break语句、goto语句和return语句。但在介绍这些控制语句之前,首先介绍一下输入输出语句。C++的输入输出C++中除了可以使用C语言中的scanf和printf函数进行输入输出外,还提供了标准的输入输出流。例如,从键盘输入时需要用到输入流,在显示器上面显示信息需要输出流。其中,cin代表输入流,cout代表输出流。它们是在头文件iostream中定义的。因此,在使用输入输出流的时候,需要引入iostream头文件。C++的输入输出1.输入语句C++的输入语句用cin表示。其中,cin必须和“”一起使用。使用cin的语法代码如下:例如,想要从键盘输入一些数据,将使用下述代码:如果想要一次性输入多个数据,不是使用逗号作为分隔符,而应该用“”分隔,应该写成:C++的输入输出2.输出语句C++的输出语句用cout表示。其中,cout必须和“”一起使用,使用cout的语法代码如下:例如,想要从键盘输出一些数据,将使用下述代码:如果想要一次性的输出多个数据,同样不是使用逗号作为分隔符,而是每项数据之间用“”分隔,如上述代码所示。注意:在C++中,可以不用“\n”控件换行,可以使用“endl”进行换行。因为在头文件iostream中定义endl(endofline)代表回车换行,其作用与“\n”相同。选择语句选择语句也称分支语句,即根据不同的条件执行不同的语句。在C++中,主要的选择语句有if语句和switch语句。1.if语句if语句有三种基本结构。(1)第一种基本结构的语法如下:•执行该if语句时,首先判断表达式是否正确。如果正确,则执行语句1。如果不正确,则不执行任何操作,执行if语句后的其他语句。该语句流程如右图所示。选择语句(2)第二种基本结构的语法如下:•执行该if语句时,首先判断表达式结果是否为真。如果判断结果为真,则执行语句1。如果判断结果为假,则执行语句2。该语句流程如右图所示。选择语句(3)第三种基本结构的语法如下:执行该if语句时,首先对表达式1进行判断。如果判断结果为真,则执行语句1。如果判断结果为假,则对表达式2进行判断。如果表达式2的判断结果为真,则执行语句2。否则,执行语句3。该语句的流程图如右图所示。选择语句2.switch语句C++中的另外一种选择语句是switch语句,其语法如下:该语句的流程图如右图所示。循环语句在编写程序的过程中,经常会遇到一些许多有规律性的重复操作,则在程序中需要重复执行这些语句。为此,C++中提供了循环语句,可使代码大大简化。循环语句包括循环条件和循环体两部。C++中的循环语句包括for语句、while语句和do~while语句。1.for语句for语句是使用最频繁并且最灵活的循环语句。其语法代码如下:其中,表达式1通常用于为循环变量赋初值,表达式2为循环条件,表达式3用于循环变量的递增或是递减,使得循环趋于结束。循环语句for语句的执行过程如下:(1)初始化表达式。(2)执行循环表达式。如果不满足条件,则跳出循环语句。(3)如果满足条件,则执行语句块(循环体)。(4)循环变量递增或递减。(5)返回步骤(2)。(6)循环结束,执行for语句下的语句。for语句的流程图如右图所示。循环语句2.while语句while语句用于“当满足某一条件时进入循环”的情况,其语法代码如下:while语句的执行过程如下:(1)判断循环条件。(2)表达式如果为真,则进入循环体。否则,进入步骤(4)。(3)执行循环体表达式。(4)循环结束,执行while语句下的语句。while语句的流程图如右图所示。循环语句3.do~while语句do~while语句和while语句类似,其语句代码如下:do~while语句的执行过程如下:(1)执行循环体语句块。(2)判断循环条件。如果满足条件,返回步骤(1)。否则,执行步骤(3)。(3)退出do~while语句。do~whil