380 likes | 591 Views
Visual C++ 程序设计基础. 主 编 吴焱. 目 录. 1 Windows 程序设计基础 1.1 程序基础 1.2 面向过程程序设计方法简介 1.2.1 设计原理和技术方法 1.2.2 特点 1.3 面向对象程序设计方法简介 1.3.1 基本概念 1.3.2 特点 1.3.3 基本原则. 1.4 Windows 的编程模式 1.4.1 Windows 操作系统特点 1.4.2 Windows 程序设计的特点 1.4.3 Windows 的基本用户界面
E N D
Visual C++程序设计基础 主 编 吴焱
目 录 • 1 Windows程序设计基础 • 1.1 程序基础 • 1.2 面向过程程序设计方法简介 • 1.2.1 设计原理和技术方法 • 1.2.2 特点 • 1.3 面向对象程序设计方法简介 • 1.3.1 基本概念 • 1.3.2 特点 • 1.3.3 基本原则
1.4 Windows的编程模式 • 1.4.1 Windows操作系统特点 • 1.4.2 Windows程序设计的特点 • 1.4.3 Windows的基本用户界面 • 1.4.4 Windows应用程序的基本组成 • 1.4.5 Windows应用程序的开发工具 • 小结1 • 2 Visual C++ 6.0 概述 • 2.1 Visual C++ 6.0特性 • 2.2 Visual C++ 6.0 可视化集成开发环境
2.2.1 主窗口 • 2.2.2 Visual C++ 6.0菜单栏 • 2.2.3 项目工作区 • 小结2 • 3 C++语言基础 • 3.1 标识符 • 3.2 数据类型 • 3.2.1 基本数据类型 • 3.2.2 构造数据类型 • 3.2.3 数据类型转换
3.3 数组、字符串和指针 • 3.3.1 数组 • 3.3.2 字符串 • 3.3.3 指针 • 3.4 运算符 • 3.5 控制结构 • 3.5.1 表达式语句、空语句和块语句 • 3.5.2 选择语句 • 3.5.3 循环语句 • 3.5.4 转移语句
3.6 函数 • 3.7 类和对象 • 3.7.1 类的定义 • 3.7.2 对象的定义 • 3.7.3 成员函数和this指针 • 3.7.4 结构、联合和类 • 3.7.5 构造函数和析构函数 • 3.7.6 类的友元 • 3.8 继承 • 3.8.1 类的继承
3.8.2 单一继承 • 3.8.3 多重继承 • 3.9 多态性和虚函数 • 3.10 重载 • 3.10.1 函数重载 • 3.10.2 运算符重载 • 3.11 C++语言书写规范 • 小结3 • 4 MFC编程 • 4.1 MFC的概念
4.1.1 封装 • 4.1.2 继承 • 4.1.3 构成应用程序的对象之间的关系 • 4.2 用向导创建应用程序 • 4.3 Visual C++ 6.0程序的组成 • 4.3.1 应用程序的类说明 • 4.3.2 应用程序的文件说明 • 4.3.3 MFC的WinMain() • 小结4 • 5 消息 • 5.1 消息的概念
5.1.1 消息的处理机制 • 5.1.2 消息的映射 • 5.1.3 消息的种类 • 5.2 发送和接收消息 • 5.3 获取用户的输入 • 5.3.1 键盘输入 • 5.3.2 鼠标输入 • 小结5 • 6 菜单、工具栏和状态栏 • 6.1 使用菜单
6.1.1 创建基本的菜单资源 • 6.1.2 为菜单添加快捷键功能 • 6.1.3 实现菜单功能 • 6.2 工具栏和状态栏 • 6.2.1 工具栏 • 6.2.2 状态栏 • 6.2.3 工具栏、状态栏的实现 • 小结6 • 7 对话框 • 7.1 对话框的特性
7.1.1 对话框的组成 • 7.1.2 对话框的分类 • 7.2 建立对话框 • 7.2.1 对话框的创建步骤 • 7.2.2 创建对话框资源 • 7.3 使用对话框 • 7.3.1 创建对话框类 • 7.3.2 对话框的实现 • 小结7 • 8 控件 • 8.1 静态文本框和编辑框
8.1.1 静态控件 • 8.1.2 编辑框 • 8.2 按钮 • 8.2.1 命令按钮 • 8.2.2 单选按钮 • 8.2.3 检查框 • 8.3 列表框、组合框 • 8.3.1 列表框 • 8.3.2 组合框 • 8.3.3 一个例子 • 8.4 新的Win32控件
8.4.1 Win32控件的通知消息 • 8.4.2 旋转按钮控件 • 8.4.3 滑尺控件 • 8.4.4 进度条控件 • 8.4.5 树形视图控件 • 8.5 控件的创建、访问、删除及通知消息 • 8.5.1 控件的创建方法 • 8.5.2 访问控件的方法 • 8.5.3 控件及控件对象的删除 • 8.5.4 控件通知消息 • 小结8
9 实例:一个画图工具的实现 • 9.1 功能分析 • 9.2 界面设计 • 9.3 功能设计和代码编写 • 9.3.1 创建应用程序框架 • 9.3.2 制作菜单 • 9.3.3 制作工具栏 • 9.3.4 实现所见即所得绘图 • 9.3.5 制作对话框 • 9.4 项目调试 • 9.5 完整的源程序清单 • 小结9
1 Windows程序设计基础 • 1.1 程序基础 • 程序设计语言可分为如下几个阶段: • 1)第1代语言 • 机器语言 • 效率较高,繁琐,容易出错,通用性很差。 • 2)第2代语言 • 汇编语言,比较直观 • 编写起来仍然很繁琐
3)第3代语言 • 特别适合用来表达算法,算法语言,也称为高级语言。 • 4)第4代语言 • 是可以快速开发应用软件的各种软件工具的统称。 • 5)第5代语言 • 将是智能化的有推理能力的语言。 • 1.2 面向过程程序设计方法简介 • 1.2.1 设计原理和技术方法
主要的设计原理和技术方法。 • 1)模块化 • 模块是由数据说明、可执行的语句等程序元素组成的集合,它是单独命名的而且可以通过名字来访问,也就是说,可以用名字代表该模块。模块化,就是把一个程序划分成若干个模块,每个模块完成某一个子功能,把这些模块组装成一个整体,可以完成指定的功能。 • 模块化使软件容易测试和调试,因而有助于提高软件的可靠性,也有助于软件开发的组织管理
2)抽象 • 在现实世界中一定事物、状态或过程之间总存在着某些相似的方面(共性)。把这些相似的方面集中和概括起来,暂时忽略它们之间的差异,这就是抽象。 • 3)信息隐藏和局部化 • 局部化,是指把一些关系密切的程序元素物理地放得彼此靠近,处于同一局部区城内。局部化有助于实现信息隐藏。 • “隐藏”意味着有效的模块化可以通过定义一组独立的模块来实现,这些独立的模块彼此间仅仅交换那些为了完成系统功能而必须交换的信息。
4)模块独立性 • 每个模块完成一个相对独立的特定子功能,并且和其他模块之间的关系尽可能简单。 • 5)结构程序设计技术 • 结构程序设计是一种设计程序的技术,它采用自顶向下逐步求精的设计方法和单入口单出口的控制结构。 • 1.2.2 特点 • 面向过程程序设计就是根据计算机的要求,围绕算法进行程序设计。面向过程程序设计方法本质上是功能分解,也称为算法分解,具体化为“自顶向下逐步求精”。
1.3 面向对象程序设计方法简介 • 面向对象程序设计方法模拟人类习惯的解题方法,用对象分解取代功能分解,也就是将程序分解成许多对象,不同对象之间通过发送消息向对方提出服务要求,接受消息的对象主动完成指定功能,程序中的所有对象分工协作,共同完成整个程序的功能。 • 1.3.1 基本概念 • 1)对象(Object)
对象是由描述该对象属性的数据以及可以对这些数据施加的所有操作封装在一起构成的统一体,对象可以执行的操作(动态行为),通常称为服务或方法。对象是由描述该对象属性的数据以及可以对这些数据施加的所有操作封装在一起构成的统一体,对象可以执行的操作(动态行为),通常称为服务或方法。 • 2)类(Class) • 类就是对具有相同数据和相同操作的一组相似对象的定义,是对具有相同属性和行为的一个或多个对象的描述,通常在这种描述中也包括对怎样创建该类的新对象的说明。 • 3)实例(Instance)
实例就是由某个特定的类所描述的一个具体的对象。实例就是由某个特定的类所描述的一个具体的对象。 • 4)消息(Message) • 消息就是要求某个对象执行在定义它的类中所定义的某个操作的说明。 • 5)方法(Method) • 方法就是对象所能执行的操作,方法描述了对象执行操作的算法,响应消息的方法。在C++语言中把方法称为成员函数。 • 6)属性(Attribute)
属性是类中所定义的数据,它是对客观世界实体所具有的性质的抽象。类的每个实例都有自己的属性值。属性是类中所定义的数据,它是对客观世界实体所具有的性质的抽象。类的每个实例都有自己的属性值。 • 7)封装性(Encapsulation) • 封装性就是信息隐藏,把对象的实现细节对外界隐藏起来。 • 8)继承(Inheritance) • 继承是指能够直接获得已有的性质和特征,而不必重复定义它们。继承是子类自动地共享基类中定义的数据和方法的机制。
9)多态性(Polymorphism) • 多态性是指子类对象可以像父类对象一样使用,相同的消息既可以发送给父类对象也可以发送给子类对象。 • 在C++语言中,多态性是通过虚函数来实现的。 • 10)对象的生命周期:构造函数和析构函数 • 生命周期,即:从使用类定义开始一直到删除它为止。
1.3.2 特点 • 1)与人类的思维方法比较一致 • 2)稳定性好 • 3)可重用性好 • 4)可维护性好 • 易于测试和调试 • 1.3.3 基本原则 • 面向对象(Object-Oriented,缩写为OO)方法学的出发点和基本原则,是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程。
面向对象方法具有下述4个要点: • ①认为客观世界是由各种对象组成的,任何事物都是对象,复杂的对象可以由比较简单的对象以某种方式组合而成。 • ②把所有对象都划分成各种对象类(简称为类),每个对象类都定义了一组数据和一组方法。 • ③按照子类(或称为派生类)与父类(或称为基类)的关系,把若干个对象类组成一个层次结构的系统(也称为类等级)。 • ④对象彼此之间仅能通过传递消息互相通信。
1.4 Windows的编程模式 • 1.4.1 Windows操作系统特点 • 1)直观、高效的面向对象的图形用户界面,易学易用 • 2)用户界面统一、友好、漂亮 • 3)丰富的设备无关的图形操作 • 4)多任务 • 1.4.2 Windows程序设计的特点 • 1)事件驱动
事件驱动程序是由事件的发生来控制,而这种事件的发生是随机的、不确定的,并没有预定的顺序,这样就允许程序的用户用各种合理的顺序来安排程序的流程。事件驱动程序是由事件的发生来控制,而这种事件的发生是随机的、不确定的,并没有预定的顺序,这样就允许程序的用户用各种合理的顺序来安排程序的流程。 图1.6 过程驱动模型
2)消息循环 • 事件驱动是靠消息循环机制来实现的。 • 消息是一种报告有关事件发生的通知。消息来源有以下4种: • 输入消息 • 控制消息 • 系统消息 • 用户消息
3)图形输出 • Windows的图形输出是由图形设备接口来完成的,GDI是系统原始的图形输出库,它用于在屏幕上输出像素、在打印机上输出硬拷贝以及绘制Windows用户界面。 • 4)资源共享 • 基本模式 • ①向Windows系统请求资源。 • ②使用该资源。 • ③释放该资源给Windows以供别的程序使用。
1.4.3 Windows的基本用户界面 • 1)窗口 • 2)边框 • 3)系统菜单框 • 4)标题栏 • 5)菜单栏 • 6)工具条 • 7)客户区 • 8)垂直滚动条和水平滚动条 • 9)状态栏
10)图标 • 11)光标 • 12)插入符 • 13)对话框 • 14)控件 • 15)消息框 • 1.4.4 Windows应用程序的基本组成 • 编写一个典型的Windows应用程序,一般需要: • 1)C,CPP源程序文件
源程序文件包含了应用程序的数据、类、功能逻辑模块(包括事件处理、用户界面对象初始化以及一些辅助例程)的定义。源程序文件包含了应用程序的数据、类、功能逻辑模块(包括事件处理、用户界面对象初始化以及一些辅助例程)的定义。 • 2)H,HPP头文件 • 头文件包含了CPP、C源文件中所有数据、模块、类的声明。 • 3)资源文件 • 包含了应用程序所使用的全部资源定义,通常以.RC为后缀名。
Windows的应用程序具有相对固定的基本结构,其中由入口函数WinMain和窗口函数构成基本框架,并包含各种数据类型、数据结构与函数等。入口函数WinMain和窗口函数是Windows应用程序的主体。Windows的应用程序具有相对固定的基本结构,其中由入口函数WinMain和窗口函数构成基本框架,并包含各种数据类型、数据结构与函数等。入口函数WinMain和窗口函数是Windows应用程序的主体。 • 1)WinMain函数 • 其功能是完成一系列的定义和初始化工作,并产生消息循环。 • WinMain函数有3个基本的组成部分:函数说明、初始化和消息循环。 • 2)窗口函数
窗口函数定义了应用程序对接收到的不同消息的响应,其中包含了应用程序对各种可能接收到的消息的处理过程,是消息处理分支控制语句的集合。窗口函数定义了应用程序对接收到的不同消息的响应,其中包含了应用程序对各种可能接收到的消息的处理过程,是消息处理分支控制语句的集合。 • 3)数据类型 • windows.h是用户调用系统功能的关键,该文件定义了Windows系统使用的数据类型,其中包括许多简单类型和结构。 • 4)数据结构 • MSG • WNDCLASS