《VC程序设计教程第二版.pptx》由会员分享,可在线阅读,更多相关《VC程序设计教程第二版.pptx(53页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、会计学1VC程序设计教程程序设计教程(jiochng)第二版第二版第一页,共53页。Visual C+程序设计(chn x sh j)-第1章2本章本章(bn zhn)主要内容主要内容n n计算机程序语言的发展计算机程序语言的发展(fzhn)(fzhn)n n程序设计方法发展程序设计方法发展(fzhn)(fzhn)历程历程n n面向对象技术的基本概念面向对象技术的基本概念n n面向对象技术的基本特征面向对象技术的基本特征n nWindowsWindows程序设计的特点程序设计的特点n n常用面向对象语言简介常用面向对象语言简介第1页/共53页第二页,共53页。Visual C+程序设计(chn
2、 x sh j)-第1章3n1.1程序设计语言程序设计语言n计算机程序设计语言计算机程序设计语言n(从低级语言到高级(从低级语言到高级(goj)语言的发展过程)语言的发展过程)n第一代:机器语言第一代:机器语言 n第二代:汇编语言第二代:汇编语言n第三代:算法语言,又称高级第三代:算法语言,又称高级(goj)语言语言nFORTRAN:科学计算、向量处理、并行处理:科学计算、向量处理、并行处理nALGOL:通用算法语言:通用算法语言nCOBOL(Common Business-Oriented Language):商用数据处理商用数据处理nBASIC、Pascal、Cn面向对象语言如:面向对象语
3、言如:Simula、Eiffel、C+第2页/共53页第三页,共53页。Visual C+程序设计(chn x sh j)-第1章4机器语言机器语言(jqyyn)和汇编语言和汇编语言n由计算机硬件系统可以识别的二进制指令组由计算机硬件系统可以识别的二进制指令组成的语言成的语言(yyn)(yyn)称为机器语言称为机器语言(yyn)(yyn)。n 计算机发展的初期,软件工程师们只能用计算机发展的初期,软件工程师们只能用机器语言机器语言(yyn)(yyn)来编写程序。这一阶段,来编写程序。这一阶段,在人类的自然语言在人类的自然语言(yyn)(yyn)和计算机编程语和计算机编程语言言(yyn)(yyn
4、)之间存在着巨大的鸿沟。之间存在着巨大的鸿沟。n汇编语言汇编语言(yyn)(yyn)将机器指令映射为一些可将机器指令映射为一些可以被人读懂的助记符,如以被人读懂的助记符,如ADDADD、SUBSUB等。等。n 此时编程语言此时编程语言(yyn)(yyn)与人类自然语言与人类自然语言(yyn)(yyn)间的鸿沟略有缩小,但仍与人类的间的鸿沟略有缩小,但仍与人类的思维相差甚远。因为它的抽象层次太低,程思维相差甚远。因为它的抽象层次太低,程序员需要考虑大量的机器细节。序员需要考虑大量的机器细节。第3页/共53页第四页,共53页。Visual C+程序设计(chn x sh j)-第1章5高级高级(g
5、oj)语言语言 高级语言屏蔽了机器的细节,提高了语言的抽象层次,程序(chngx)中可以采用具有一定含义的数据命名和容易理解的执行语句。这使得在书写程序(chngx)时可以联系到程序(chngx)所描述的具体事物。第4页/共53页第五页,共53页。Visual C+程序设计(chn x sh j)-第1章6本章本章(bn zhn)主要内容主要内容n n计算机程序语言的发展计算机程序语言的发展n n程序设计方法发展历程程序设计方法发展历程(lchng)(lchng)n n面向对象技术的基本概念面向对象技术的基本概念n n面向对象技术的基本特征面向对象技术的基本特征n nWindowsWindow
6、s程序设计的特点程序设计的特点n n常用面向对象语言简介常用面向对象语言简介第5页/共53页第六页,共53页。Visual C+程序设计(chn x sh j)-第1章71.21.21.21.2程序设计方法的发展程序设计方法的发展程序设计方法的发展程序设计方法的发展(fzhn)(fzhn)(fzhn)(fzhn)历程历程历程历程一、面向过程一、面向过程(guchng)的结构化程序设计方法的结构化程序设计方法2020世纪世纪6060年代诞生、七八十年代广泛使用的程序设计方法,语言年代诞生、七八十年代广泛使用的程序设计方法,语言工具有:工具有:PASCALPASCAL、C C 等。等。设计思路设计
7、思路:自顶向下,逐步求精;程序结构按功能划分:自顶向下,逐步求精;程序结构按功能划分为若干个基本模块,这些模块形成一个树型结构;各模为若干个基本模块,这些模块形成一个树型结构;各模块间的关系尽可能简单,在功能上相对独立;每一模块块间的关系尽可能简单,在功能上相对独立;每一模块内部均是由内部均是由顺序、选择、循环顺序、选择、循环三种基本结构组成;其模块化实三种基本结构组成;其模块化实现的具体方法是使用子程序。现的具体方法是使用子程序。第6页/共53页第七页,共53页。Visual C+程序设计(chn x sh j)-第1章8优点:优点:有效地将一个较复杂的程序系统设计任务分解成许多有效地将一个
8、较复杂的程序系统设计任务分解成许多易于控制和处理易于控制和处理(chl)的子任务,便于开发和维护。的子任务,便于开发和维护。存在问题:存在问题:是一种面向过程的程序设计是一种面向过程的程序设计(shj)方法,而方法,而“过程过程”和和“操作操作”又是不稳定和多变的,因此不能直接反映人求解问题的思路。又是不稳定和多变的,因此不能直接反映人求解问题的思路。程序代码可重用性差。程序中除少数标准库函数外,每设计程序代码可重用性差。程序中除少数标准库函数外,每设计(shj)一个程序时,程序员几乎从零做起。即使重用代码,通常也一个程序时,程序员几乎从零做起。即使重用代码,通常也是通过拷贝或编辑重新生成一份
9、。是通过拷贝或编辑重新生成一份。维护程序的一致性困难。数据和过程相互独立,存在着用正确的维护程序的一致性困难。数据和过程相互独立,存在着用正确的程序模块调用错误的数据,或用错误的程序模块调用正确的数据的程序模块调用错误的数据,或用错误的程序模块调用正确的数据的可能。因此,程序员必须时刻注意需要处理的数据格式。可能。因此,程序员必须时刻注意需要处理的数据格式。第7页/共53页第八页,共53页。Visual C+程序设计(chn x sh j)-第1章9二二.面向对象程序设计面向对象程序设计(chn x sh j)(chn x sh j)方法方法(OOP,Object-Oriented Progr
10、amming)(OOP,Object-Oriented Programming)面向对象程序设计是一种以对象为基础,以事件或消息来面向对象程序设计是一种以对象为基础,以事件或消息来驱动对象执行处理的程序设计技术。驱动对象执行处理的程序设计技术。吸收软件工程和结构化程序设计领域吸收软件工程和结构化程序设计领域(ln y)有益的概念有益的概念和有效的方法而发展起来的一种软件方法。和有效的方法而发展起来的一种软件方法。将数据及对数据的操作放在一起,作为相互依存、不可分将数据及对数据的操作放在一起,作为相互依存、不可分割的整体来考虑,它采用数据抽象和信息隐藏技术,将对象割的整体来考虑,它采用数据抽象和
11、信息隐藏技术,将对象和对对象的操作抽象成一种新的数据类型和对对象的操作抽象成一种新的数据类型 类。类。第8页/共53页第九页,共53页。Visual C+程序设计(chn x sh j)-第1章10 这种方法集抽象性、封装性、继承性和多态性于一体,易于这种方法集抽象性、封装性、继承性和多态性于一体,易于实现模块化、可重用实现模块化、可重用(zhngyng)、易维护、易扩充等功能。、易维护、易扩充等功能。优点:优点:程序模块间的关系更为简单,程序模块的独立性、程序模块间的关系更为简单,程序模块的独立性、数据的安全性就有了良好的保障。数据的安全性就有了良好的保障。通过继承通过继承(jchng)(j
12、chng)与多态性,可以大大提高程序与多态性,可以大大提高程序的可重用性,使得软件的开发和维护都更为方便。的可重用性,使得软件的开发和维护都更为方便。第9页/共53页第十页,共53页。Visual C+程序设计(chn x sh j)-第1章11 结构化程序设计的方法是把程序看作是工作在数据上的一系列过程或函数的集合。程序的定律是:程序=(算法)+(数据结构)面向对象方法把程序看作是互相协作而又彼此独立的对象的集合。对象间通过发送(f sn)消息而相互作用。程序的定律是:对象=(算法+数据结构)程序=(对象+对象+)第10页/共53页第十一页,共53页。Visual C+程序设计(chn x
13、sh j)-第1章12实实例例:栈栈是是一一种种由由若若干干个个按按线线性性次次序序排排列列的的元元素素所所构构成成的的复复合合数数据据,对对栈栈只只能能(zh nn)实实施施两两种种操操作作:进进栈栈(增增加加一一个个元元素素)和和退退栈栈(删删除除一一个个元元素素),并并且且这这两两个个操操作作必必须须在在栈栈的的同同一一端端(栈栈顶顶)进进行行。后后进进先先出出(LIFO)是是栈栈的的一一个个重要性质。重要性质。1)1)结构结构(jigu)(jigu)化方案化方案#include#include#define STACK_SIZE 100#define STACK_SIZE 100str
14、uct Stack /struct Stack /栈的结构栈的结构(jigu)(jigu)体体 int top;int top;int bufferSTACK_SIZE;int bufferSTACK_SIZE;void init(Stack&s)/void init(Stack&s)/对栈初始化的函数对栈初始化的函数 s.top=-1;s.top=-1;第11页/共53页第十二页,共53页。Visual C+程序设计(chn x sh j)-第1章13bool push(Stack&s,int i)/进栈操作进栈操作(cozu)if(s.top=STACK_SIZE-1)printf(“St
15、ack is overflow.n”);return false;else s.top+;s.buffers.top=i;return true;第12页/共53页第十三页,共53页。Visual C+程序设计(chn x sh j)-第1章14bool pop(Stack&s,int&i)/出栈操作出栈操作(cozu)if(s.top=-1)printf(“Stack is empty.n”);return false;else i=s.buffers.top;s.top-;return true;第13页/共53页第十四页,共53页。Visual C+程序设计(chn x sh j)-第1
16、章15对栈的使用可由两种方式:对栈的使用可由两种方式:(1 1)可以通过提供)可以通过提供(tgng)(tgng)的函数的函数来实现,来实现,Stack st;Stack st;int x;int x;init(st);init(st);push(st,12);push(st,12);pop(st,x);pop(st,x);(2 2)也可以)也可以(ky)(ky)直接在栈的数直接在栈的数据表示上直接进行据表示上直接进行 st.top=-1;st.top+;st.bufferst.top=12;x=st.bufferst.top;st.top-;第14页/共53页第十五页,共53页。Visual
17、 C+程序设计(chn x sh j)-第1章162)面向对象方案面向对象方案#include#define STACK_SIZE 100class Stack /定义定义stack类,将数据类,将数据(shj)和操作放在一起和操作放在一起 private:int top;int bufferSTACK_SIZE;public:Stack()top=-1;/构造函数,对栈进行初始化构造函数,对栈进行初始化 bool push(int i);/进栈函数进栈函数 if(top=STACK_SIZE-1)printf(“Stack is overflow.n”);return false;else
18、top+;buffertop=i;return true;第15页/共53页第十六页,共53页。Visual C+程序设计(chn x sh j)-第1章17bool pop(int&i);if(top=-1)printf(“Stack is empty.n”);return false;else i=buffertop;top-;return true;Stack st;Stack st;int x;int x;st.push(12);st.push(12);st.pop(x);st.pop(x);st.top=-1;/errorst.top=-1;/errorst.top+;/errors
19、t.top+;/errorst.bufferst.top=12;/errorst.bufferst.top=12;/error第16页/共53页第十七页,共53页。Visual C+程序设计(chn x sh j)-第1章18本章主要本章主要(zhyo)内容内容n n计算机程序语言的发展计算机程序语言的发展n n程序设计方法发展历程程序设计方法发展历程n n面向对象技术面向对象技术(jsh)(jsh)的基本概念的基本概念 (对象,类,消息和事件对象,类,消息和事件)n n面向对象技术面向对象技术(jsh)(jsh)的基本特征的基本特征n nWindowsWindows程序设计的特点程序设计的特
20、点n n常用面向对象语言简介常用面向对象语言简介第17页/共53页第十八页,共53页。Visual C+程序设计(chn x sh j)-第1章191.31.3面向对象的基本概念面向对象的基本概念n对象(对象(ObjectObject)n 一般意义上的对象:一般意义上的对象:n是现实世界中一个实际存在的事物。是现实世界中一个实际存在的事物。n可可以以使使有有形形的的(比比如如一一辆辆汽汽车车),也也可可以以是是无无形形(wxng)(wxng)的(比如一项计划)。的(比如一项计划)。n是构成世界的一个独立单位,具有:是构成世界的一个独立单位,具有:n静态特征:可以用某种数据来描述静态特征:可以用
21、某种数据来描述n动态特征:对象所表现的行为或具有的功能动态特征:对象所表现的行为或具有的功能第18页/共53页第十九页,共53页。Visual C+程序设计(chn x sh j)-第1章20面向对象方法中的对象:面向对象方法中的对象:是系统中用来描述客观事物的一个实体是系统中用来描述客观事物的一个实体(sht),它,它是用来构成系统的一个基本单位。对象由一组属性是用来构成系统的一个基本单位。对象由一组属性和一组行为构成。和一组行为构成。属性:用来描述对象静态特征的数据项。属性:用来描述对象静态特征的数据项。行为:用来描述对象动态特征的操作序列。行为:用来描述对象动态特征的操作序列。第19页/
22、共53页第二十页,共53页。Visual C+程序设计(chn x sh j)-第1章21例如有一个例如有一个(y)(y)人名叫小明,性别男,身高人名叫小明,性别男,身高1.80m1.80m,体重,体重68kg68kg,可以修电器,可以教计算机课,下面来描述这个对象,可以修电器,可以教计算机课,下面来描述这个对象对象名对象名:小明小明对象的状态:对象的状态:性别:男性别:男身高:身高:1.80m1.80m体重:体重:68kg68kg对象的功能(可做的操作):对象的功能(可做的操作):回答身高回答身高回答体重回答体重 均属于自身均属于自身(zshn)(zshn)所承受的所承受的操作操作 回答性别
23、回答性别修理电器修理电器 属于施加与其他对象的操作属于施加与其他对象的操作教计算机课教计算机课第20页/共53页第二十一页,共53页。Visual C+程序设计(chn x sh j)-第1章22类(类(classclass)类是具有类是具有(jyu)(jyu)相同属性和行为的一组对象的相同属性和行为的一组对象的集合,它为属于它的全部对象提供了统一的抽象集合,它为属于它的全部对象提供了统一的抽象描述,其内部包括属性和行为两个主要部分。类描述,其内部包括属性和行为两个主要部分。类是对象集合的再抽象。是对象集合的再抽象。类与实例的关系类与实例的关系(gun x)(gun x):组成类的对象均为此类
24、的实例(组成类的对象均为此类的实例(InstanceInstance)。)。类是多个实例的综合抽象,实例是类的个体实类是多个实例的综合抽象,实例是类的个体实物。物。第21页/共53页第二十二页,共53页。Visual C+程序设计(chn x sh j)-第1章23n人类人类(rnli)的定义:的定义:nclass HUMANKINDnchar *name;ndouble weight;npublic:nvoid eat();nvoid wear();nvoid sleep();nvoid travel();n ;n人类人类(rnli)的实例:的实例:HUMANKIND XiaoMing;特征
25、、属性、数据成员特征、属性、数据成员行为、操作、函数成员行为、操作、函数成员第22页/共53页第二十三页,共53页。Visual C+程序设计(chn x sh j)-第1章24 消息消息消息消息(xio xi)(xio xi)和事件和事件和事件和事件n n消息(消息(MessageMessage)是描述事件发)是描述事件发生的信息,它是对象之间发出生的信息,它是对象之间发出(fch)(fch)的行为请求。的行为请求。n n多个消息构成一个事件。多个消息构成一个事件。消息具有三个性质:消息具有三个性质:(1)(1)同一对象可接收不同形式的多个消息,产生不同的响同一对象可接收不同形式的多个消息,
26、产生不同的响应;应;(2)(2)相同形式的消息可以送给不同的对象,所作出的响应可以是截然相同形式的消息可以送给不同的对象,所作出的响应可以是截然不同的;不同的;(3)(3)消息的发送可以不考虑具体的接收者,对象可以响应消息,消息的发送可以不考虑具体的接收者,对象可以响应消息,也可以对消息不予理会,对消息的响应并不是必须的。也可以对消息不予理会,对消息的响应并不是必须的。第23页/共53页第二十四页,共53页。Visual C+程序设计(chn x sh j)-第1章25本章本章(bn zhn)主要内容主要内容n n计算机程序语言的发展计算机程序语言的发展n n程序设计方法发展历程程序设计方法发
27、展历程n n面向对象技术的基本概念面向对象技术的基本概念n n面向对象技术的基本特征面向对象技术的基本特征(抽象性,抽象性,封装性,继承性,多态性封装性,继承性,多态性)n nWindowsWindows程序设计的特点程序设计的特点n n常用常用(chn yn)(chn yn)面向对象语言简面向对象语言简介介第24页/共53页第二十五页,共53页。Visual C+程序设计(chn x sh j)-第1章261.41.41.41.4面向对象技术面向对象技术面向对象技术面向对象技术(jsh)(jsh)(jsh)(jsh)的基本特征的基本特征的基本特征的基本特征 n n抽象性抽象性(Abstrac
28、t)n n抽象就是忽略事物中与当前目抽象就是忽略事物中与当前目标无关的非本质特征,更充分标无关的非本质特征,更充分(chngfn)地注意与当前目标地注意与当前目标有关的本质特征。有关的本质特征。第25页/共53页第二十六页,共53页。Visual C+程序设计(chn x sh j)-第1章27n n封装性封装性(Encapsulation)n n封装就是封装就是(jish)把对象的属性把对象的属性和行为结合成一个独立的单位,和行为结合成一个独立的单位,并尽可能隐蔽对象的内部细节。并尽可能隐蔽对象的内部细节。n n 其有两个含义:一是封装性,其有两个含义:一是封装性,另一个是另一个是“信息隐蔽
29、信息隐蔽”。n n一是把对象的全部属性和行为结一是把对象的全部属性和行为结合在一起,形成一个不可分割的合在一起,形成一个不可分割的独立单位。独立单位。n n尽可能隐蔽对象的内部细节,对尽可能隐蔽对象的内部细节,对外形成一道屏障,与外部的联系外形成一道屏障,与外部的联系只能通过外部接口实现。只能通过外部接口实现。就像一个人安装一台电脑,将设备安装起来。当需要声卡时,只需要购买即可。声卡是一个独立的系统单元,具有封装性。无需(wx)知道封装单元内部是如何工作就能使用的思想称为“信息屏蔽”。第26页/共53页第二十七页,共53页。Visual C+程序设计(chn x sh j)-第1章28n n继
30、承性继承性(Inheritance)(Inheritance)n n继承是一种联结类与类的层次模继承是一种联结类与类的层次模型。继承性是指特殊类的对象拥型。继承性是指特殊类的对象拥有其一般有其一般(ybn)(ybn)类的属性和行为类的属性和行为的特性。的特性。n n继承意味着继承意味着“自动地拥有自动地拥有”,即,即特殊类中不必重新定义已在一般特殊类中不必重新定义已在一般(ybn)(ybn)类中定义过的属性和行为,类中定义过的属性和行为,而它却自动地、隐含地拥有其一而它却自动地、隐含地拥有其一般般(ybn)(ybn)类的属性与行为。类的属性与行为。车车 洒水车洒水车父类父类/基类基类子类子类/
31、派生类派生类继承继承(jchng)第27页/共53页第二十八页,共53页。Visual C+程序设计(chn x sh j)-第1章29继承的分类:继承的分类:1.1.按继承源划分:按继承源划分:单继承单继承 :每个派生类只直接继承了一个基类:每个派生类只直接继承了一个基类的特征的特征 多继承:指多个基类派生出一个派生类的继承多继承:指多个基类派生出一个派生类的继承关系关系(gun x)(gun x),多继承的派生类直接继承了,多继承的派生类直接继承了不止一个基类的特征。不止一个基类的特征。ABCBA第28页/共53页第二十九页,共53页。Visual C+程序设计(chn x sh j)-第
32、1章30n2.2.按继承内容划分:按继承内容划分:n取代继承:派生类对象完整地继承了基类的取代继承:派生类对象完整地继承了基类的所有所有(suyu)“(suyu)“属性属性”和和“操作操作”,且没有,且没有修改或增加新的修改或增加新的“属性属性”和和“操作操作”。n包含继承:派生类对象完整地继承了所有包含继承:派生类对象完整地继承了所有(suyu)(suyu)基类的所有基类的所有(suyu)“(suyu)“属性属性”和和“操作操作”,并增加了新的,并增加了新的“属性属性”和和“操作操作”。n受限继承:派生类对象部分地继承了基类的受限继承:派生类对象部分地继承了基类的“属性属性”和和“操作操作”
33、,并且没有增加新的,并且没有增加新的“属性属性”和和“操作操作”。n特化继承:派生类对象继承了基类的特化继承:派生类对象继承了基类的“属性属性”和和“操作操作”,并对原有,并对原有“属性属性”和和“操作操作”进行了修改。进行了修改。第29页/共53页第三十页,共53页。Visual C+程序设计(chn x sh j)-第1章31n n多态性多态性(Polymorphism)(Polymorphism)n n多态性是指类中同一函数名对应多态性是指类中同一函数名对应多个具有相似功能多个具有相似功能(gngnng)(gngnng)的的不同函数,可以使用相同的调用不同函数,可以使用相同的调用方式来调
34、用这些具有不同功能方式来调用这些具有不同功能(gngnng)(gngnng)的同名函数的特性。的同名函数的特性。C+C+支持两种多态性:编译支持两种多态性:编译(biny)(biny)时的多态性和运行时的多态性。时的多态性和运行时的多态性。重载重载:多个函数具有相同的名字但具有不同的作用。:多个函数具有相同的名字但具有不同的作用。函数重载函数重载 操作符重载操作符重载 虚函数虚函数:虚函数使用户在一个类等级中可以使用相同:虚函数使用户在一个类等级中可以使用相同 函数的多个版本。函数的多个版本。第30页/共53页第三十一页,共53页。Visual C+程序设计(chn x sh j)-第1章32
35、本章本章(bn zhn)主要内容主要内容n n计算机程序语言的发展计算机程序语言的发展n n程序设计方法发展历程程序设计方法发展历程n n面向对象技术的基本概念面向对象技术的基本概念n n面向对象技术的基本特征面向对象技术的基本特征n nWindowsWindows程序设计的特点程序设计的特点n n常用常用(chn yn)(chn yn)面向对象语言简面向对象语言简介介第31页/共53页第三十二页,共53页。Visual C+程序设计(chn x sh j)-第1章331.5 Windows1.5 Windows程序设计程序设计程序设计程序设计(chn(chn x sh j)x sh j)的特
36、点的特点的特点的特点 n n(1 1)事件驱动的程序设计)事件驱动的程序设计 n n(2 2)消息循环与输入)消息循环与输入(shr)(shr)n n(3 3)图形输出)图形输出 n n(4 4)用户界面对象)用户界面对象 n n(5 5)资源共享)资源共享 n n(6 6)WindowsWindows应用程序组成应用程序组成 n n (7 7)Windows Windows应用程序生成应用程序生成第32页/共53页第三十三页,共53页。Visual C+程序设计(chn x sh j)-第1章34(1 1 1 1)驱动程序设计)驱动程序设计)驱动程序设计)驱动程序设计(shj)(shj)(s
37、hj)(shj)的特点的特点的特点的特点n nA.A.过程驱动过程驱动不是面向用户的,交互性不是面向用户的,交互性差,用户界面不够友好差,用户界面不够友好,用户按程序顺序用户按程序顺序设计设计n nB.B.事件驱动事件驱动是一种是一种“被动被动”式程序设式程序设计方法,程序开始运行时,处于等待用户计方法,程序开始运行时,处于等待用户输入事件状态,然后输入事件状态,然后(rnhu)(rnhu)取得事件并作取得事件并作出相应反应,处理完毕又返回并处于等待出相应反应,处理完毕又返回并处于等待事件状态事件状态 第33页/共53页第三十四页,共53页。Visual C+程序设计(chn x sh j)-
38、第1章35 A.A.A.A.过程驱动过程驱动过程驱动过程驱动(q dn)(q dn)(q dn)(q dn)模型模型模型模型 第34页/共53页第三十五页,共53页。Visual C+程序设计(chn x sh j)-第1章36B.B.B.B.事件事件事件事件(shjin)(shjin)(shjin)(shjin)驱动程序模型驱动程序模型驱动程序模型驱动程序模型 第35页/共53页第三十六页,共53页。Visual C+程序设计(chn x sh j)-第1章37(2 2 2 2)消息循环)消息循环)消息循环)消息循环(xnhun)(xnhun)(xnhun)(xnhun)与输入与输入与输入与
39、输入 n nWindowsWindowsWindowsWindows应用程序的消息来源有以下四种:应用程序的消息来源有以下四种:应用程序的消息来源有以下四种:应用程序的消息来源有以下四种:n n(1 1 1 1)输入)输入)输入)输入(shr)(shr)(shr)(shr)消息:包括键盘和鼠标的输入消息:包括键盘和鼠标的输入消息:包括键盘和鼠标的输入消息:包括键盘和鼠标的输入(shr)(shr)(shr)(shr)。n n(2 2 2 2)控制消息:用来与)控制消息:用来与)控制消息:用来与)控制消息:用来与WindowsWindowsWindowsWindows的控制对象,如列表框、的控制对
40、象,如列表框、的控制对象,如列表框、的控制对象,如列表框、按钮、检查框等进行双向通信。按钮、检查框等进行双向通信。按钮、检查框等进行双向通信。按钮、检查框等进行双向通信。n n(3 3 3 3)系统消息:对程序化的事件或系统时钟中断作出反)系统消息:对程序化的事件或系统时钟中断作出反)系统消息:对程序化的事件或系统时钟中断作出反)系统消息:对程序化的事件或系统时钟中断作出反应。应。应。应。n n(4 4 4 4)用户消息:这是程序员自己定义并在应用程序中主)用户消息:这是程序员自己定义并在应用程序中主)用户消息:这是程序员自己定义并在应用程序中主)用户消息:这是程序员自己定义并在应用程序中主动
41、发出的,一般由应用程序的某一部分内部处理。动发出的,一般由应用程序的某一部分内部处理。动发出的,一般由应用程序的某一部分内部处理。动发出的,一般由应用程序的某一部分内部处理。第36页/共53页第三十七页,共53页。Visual C+程序设计(chn x sh j)-第1章38nGDI(GDI(图形设备接口图形设备接口):实现:实现(shxin)(shxin)与设备无关的图形操作与设备无关的图形操作功能。功能。n屏幕上绘制像素、打印输出,绘制用户界面包括窗口、菜单、屏幕上绘制像素、打印输出,绘制用户界面包括窗口、菜单、对话框等。对话框等。n内核内核KERNELKERNEL支持与操作系统的功能:如
42、进程加载、文件支持与操作系统的功能:如进程加载、文件I/OI/O,以及内存、线程等。以及内存、线程等。nUSERUSER为用户界面对象提供支持,它用于接收和管理所有输入为用户界面对象提供支持,它用于接收和管理所有输入消息、系统消息并把它们发给相应的窗口的消息队列消息、系统消息并把它们发给相应的窗口的消息队列(一个系一个系统定义的内存块,用于临时存储消息统定义的内存块,用于临时存储消息)或是把消息直接发给窗或是把消息直接发给窗口过程。口过程。n 每个窗口维护自己的消息队列,并从中取出消息,利用窗每个窗口维护自己的消息队列,并从中取出消息,利用窗口函数进行处理。口函数进行处理。WindowsWin
43、dows操作系统包括三个内核基本操作系统包括三个内核基本(jbn)(jbn)元件:元件:GDI,GDI,KERNEL,USERKERNEL,USER。第37页/共53页第三十八页,共53页。Visual C+程序设计(chn x sh j)-第1章39第38页/共53页第三十九页,共53页。Visual C+程序设计(chn x sh j)-第1章40(3 3 3 3)图形)图形)图形)图形(txng)(txng)(txng)(txng)输出输出输出输出n n1.DOS程序独占整个显示屏幕,win程序控制一部分屏幕,通过Windows管理。n n2.Windows程序的所有输出都是图形(txn
44、g)。Windows提供了丰富的图形(txng)函数用于图形(txng)输出,这对输出图形(txng)是相当方便的。n n 3.Windows下的输出是设备无关,应用程序是使用图形(txng)设备接口(GDI-graphics device interface)来进行图形(txng)输出。第39页/共53页第四十页,共53页。Visual C+程序设计(chn x sh j)-第1章41(4 4 4 4)用户界面)用户界面)用户界面)用户界面(yn h ji min)(yn h ji min)(yn h ji min)(yn h ji min)对象对象对象对象n nWindowsWindows
45、WindowsWindows支持丰富的用户支持丰富的用户支持丰富的用户支持丰富的用户(yngh)(yngh)(yngh)(yngh)接口对象,包括:窗口、图标、接口对象,包括:窗口、图标、接口对象,包括:窗口、图标、接口对象,包括:窗口、图标、菜单、对话框等等。程序员只需简单的几十行代码,就可以设计出菜单、对话框等等。程序员只需简单的几十行代码,就可以设计出菜单、对话框等等。程序员只需简单的几十行代码,就可以设计出菜单、对话框等等。程序员只需简单的几十行代码,就可以设计出一个非常漂亮的图形用户一个非常漂亮的图形用户一个非常漂亮的图形用户一个非常漂亮的图形用户(yngh)(yngh)(yngh)
46、(yngh)界面。而在界面。而在界面。而在界面。而在DOSDOSDOSDOS环境下,则需要环境下,则需要环境下,则需要环境下,则需要大量的代码来完成同样的工作,而且效果也没有大量的代码来完成同样的工作,而且效果也没有大量的代码来完成同样的工作,而且效果也没有大量的代码来完成同样的工作,而且效果也没有WindowsWindowsWindowsWindows提供的那提供的那提供的那提供的那么好。么好。么好。么好。第40页/共53页第四十一页,共53页。Visual C+程序设计(chn x sh j)-第1章42(5 5)资源共享)资源共享)资源共享)资源共享 n n占用资源形式占用资源形式占用资
47、源形式占用资源形式n n 对于对于对于对于DOSDOSDOSDOS(单任务)程序来说,它运行时独占系统的(单任务)程序来说,它运行时独占系统的(单任务)程序来说,它运行时独占系统的(单任务)程序来说,它运行时独占系统的全部资源,包括显示器、内存全部资源,包括显示器、内存全部资源,包括显示器、内存全部资源,包括显示器、内存(ni cn)(ni cn)(ni cn)(ni cn)等,在程序结束等,在程序结束等,在程序结束等,在程序结束时才释放资源。时才释放资源。时才释放资源。时才释放资源。n n Windows Windows Windows Windows是一个多任务的操作系统,各个应用程序共是
48、一个多任务的操作系统,各个应用程序共是一个多任务的操作系统,各个应用程序共是一个多任务的操作系统,各个应用程序共享系统提供的资源,常见的资源包括:设备上下文,画享系统提供的资源,常见的资源包括:设备上下文,画享系统提供的资源,常见的资源包括:设备上下文,画享系统提供的资源,常见的资源包括:设备上下文,画刷,画笔,字体,对话框控制,对话框,图标,定时器,刷,画笔,字体,对话框控制,对话框,图标,定时器,刷,画笔,字体,对话框控制,对话框,图标,定时器,刷,画笔,字体,对话框控制,对话框,图标,定时器,插入符号,通信端口,电话线等。插入符号,通信端口,电话线等。插入符号,通信端口,电话线等。插入符
49、号,通信端口,电话线等。n n第41页/共53页第四十二页,共53页。Visual C+程序设计(chn x sh j)-第1章43WindowsWindowsWindowsWindows应用程序要求资源基本模式应用程序要求资源基本模式应用程序要求资源基本模式应用程序要求资源基本模式 1.1.1.1.向向向向WindowsWindowsWindowsWindows系统请求资源系统请求资源系统请求资源系统请求资源 2.2.2.2.使用该资源;使用该资源;使用该资源;使用该资源;3.3.3.3.释放该资源给释放该资源给释放该资源给释放该资源给WindowsWindowsWindowsWindows
50、以供别的程序使用以供别的程序使用以供别的程序使用以供别的程序使用 访问资源形式访问资源形式访问资源形式访问资源形式 Windows Windows Windows Windows应用程序一般不要直接访问内存或其他硬件应用程序一般不要直接访问内存或其他硬件应用程序一般不要直接访问内存或其他硬件应用程序一般不要直接访问内存或其他硬件设备,如键盘、鼠标、计数器、屏幕或串口、并口等。设备,如键盘、鼠标、计数器、屏幕或串口、并口等。设备,如键盘、鼠标、计数器、屏幕或串口、并口等。设备,如键盘、鼠标、计数器、屏幕或串口、并口等。WindowsWindowsWindowsWindows系统要求绝对控制这些资