当前课程知识点:VC++面向对象与可视化程序设计(上):Windows编程基础 > 第1章 Windows应用程序基础 > 1-1 Windows应用程序的特点 > 1-1
返回《VC++面向对象与可视化程序设计(上):Windows编程基础》慕课在线视频课程列表
返回《VC++面向对象与可视化程序设计(上):Windows编程基础》慕课在线视频列表
同学们好!
今天我们开始介绍Windows应用程序基础这一章的内容
首先我们介绍一下Windows应用程序的特点
什么是Windows应用程序呢
这一点可能对于初学者来说是一个新的概念
其实这个问题很简单
大家知道Windows是一种操作系统
这个操作系统大家很熟悉
以Windows作为平台运行的应用程序
就叫做Windows应用程序
那大家平时运行在Windows操作系统环境下的应用程序大家用的比较多了
实际上那些都可以称作为Windows应用程序
那么在了解了Windows应用程序之后
我们来看Windows应用程序它有哪些特点
首先它是面向对象的
一讲到面向对象
大家很容易想到面向对象的概念
甚至联想起一些面向对象的编程语言
比如说C++、Java等等等等
这些都是面向对象的程序设计语言
但这里我们所指的面向对象的特点
并不是指程序设计思想、编程方法或者语言
而是针对Windows应用的本身
那怎么说针对Windows应用的本身
大家看这里有两幅图
第一个图我们写的是人机交互的界面是屏幕
这是什么意思
它第一个图是控制台应用程序的运行结果界面
而第二个图是大家非常熟悉的Windows的记事本界面
控制台窗口提供了一种标准的基于文本的界面和命令提示环境
那么界面 就如我们这个图1(左上图)所示
它输入的是命令函数
而输出的是字符形式
那大家再看看(右上图)记事本
人机交互的界面是窗口
而窗口它本身就是一个对象
上面大家看到的有文件、编辑、格式、查看、帮助等
这些大家非常熟悉的菜单
那么这些菜单 本身也是对象
叫做菜单对象
我们所进行的操作
就根据窗口、菜单等对象进行操作
而不是说应用Windows应用是采用面向对象的
这就是所谓的Windows应用程序的面向对象性
那这里大家可能又提出一个问题
刚才说的对象
那什么是对象
对象通俗来说就是Windows应用程序界面上的各种规范的部件
那么这些部件有哪些
我举几个大家非常熟悉的部件
窗口、菜单、按钮、对话框、程序模块
那么这些都认为是Windows这个应用程序当中对象的规范部件
那我们编写Windows应用程序
相当一部分工作是在创建对象
以及为对象属性赋值
在了解了什么是对象之后
我们看看对象有什么特征
我们说菜单是个对象
大家就想起菜单点开
比方说点开一个文件菜单
它就有下面一系列的菜单项
比如说“新建”、“打开”、“保存”、“打印”等等等等
那么也就是说
当你选择一个菜单的时候
会弹出一系列菜单项
然后再选择菜单项进行操作
那么菜单的操作都是这样的
所以说
它就是有规范形态和操作模式
再比如说按钮
那么按钮界面上会放上一系列的按钮
那么你选择哪一个按钮后
通过鼠标的单击或者双击
来进行操作
单击和双击对于按钮这个对象来说
就是一种操作模式
那么按钮里面
大家可能慢慢学习会接触到正常的下压式按钮
或者常见的下压式按钮
以及圆形按钮 就是单旋按钮
和复选按钮
那么不管是什么按钮
都有自己规范的形态
所以说对象的特征是具有规范的形态和操作模式
我们说第二个特征
具有消息传递机制和事件驱动机制
我们知道传统的MS-DOS程序
执行的是按程序代码的命令顺序执行的
最多是响应键盘输入等等
这样程序的设计是面向程序的
而不是面向用户的
那么基于Windows的应用程序
它是以消息为基础
由事件来驱动
但是它不是由事件的顺序来控制的
而是由事件的发生来控制的
而这种发生是随机的
就像应用程序里面比如说
根据应用程序的功能需求安放了五个按钮
根据你的操作需求
先按哪个按钮 后操作哪个按钮 这是随机的
是根据你的功能需求的
不同人的功能需求
他按按钮的顺序可能是不一样的
所以它是靠事件驱动的
比如说我们这里有这么一个应用程序
这个程序的功能是输入学生的姓名之后
输入这个学生的三次的测验成绩
最后计算他的平均成绩
那如果用传统的过程驱动的方法
来编写这个应用程序的话
它就是这种
大家现在看到的这种模式
首先应用程序先启动
然后输入姓名
紧接着输入第一次成绩
第二次成绩和第三次成绩
然后进行计算
这样就存在一个问题
如果第一次成绩现在还没汇总好
但第二次成绩已经汇总好
你这时候就没法先把第二次成绩录入
然后再等着第一次成绩汇总好后再录入
所以这样的话
有时候操作起来这个便捷性、灵活性就受到限制
那如果我们换一个思路
用事件驱动方法来编写应用程序
首先我们先启动应用程序
然后通过接收消息的方式
通过消息处理来接收输入
那这样话我们就可以
输入姓名和输入第一次成绩、第二次成绩、第三次成绩
那么这些
它们(之间的)关系是没有先后关系
而是并行关系
那这样好处就可以说
你可以先输入某个学生的姓名
然后你先输入第三次成绩
再回过来输第二次成绩
或者说 最后再输入第一次成绩
这样只要你手头有的数据
都可以及时输入
而不受第一次成绩、第二次成绩、第三次成绩产生的顺序的制约
所以说这样应用程序用起来就比较方便一点
或者说灵活一点
那么这两种模式
大家就可以看到
过程驱动方式编写的应用程序
和事件驱动方法编写的应用程序 它们的区别
我们说Windows应用程序
对用户的输入的响应方式
主要包括消息循环和事件响应两种机制
什么叫消息循环
什么叫事件响应
例如用户单击鼠标左键
那么在消息响应的机制中
就会出现单击鼠标左键这个消息
那不同的机制处理的过程和原理也是不一样的
那在VC++里面
在我们的课程里面
采用的是消息队列方式进行处理
那就是说
Windows将产生的消息输送到消息队列中
然后系统将消息传递给窗口处理的函数进行相应的处理
那关于消息处理的函数
我们后面会紧接着进行介绍
那这里消息队列里面
就可以存在一系列消息
那么先进来的消息、先产生的消息肯定是先处理
这个我们大家知道就像平常
我们在社会活动中经常是要排队的是吧
比如上车是要排队的
超市买东西结账的时候也是要排队的
先来后到 有这么个基本的规矩
消息队列的处理也是
先产生的消息系统先处理
后产生的消息系统后处理
那么也就是说
处理消息是根据消息产生的先后
而消息产生
至于什么消息先产生
什么消息后产生是随机的
是根据用户的操作需求来进行的
Windows应用程序的第三个特征是多任务和多线程
大家知道Windows是多任务的操作系统
它能够同时运行多个应用程序
那从下面的截屏我们就可以看出
Windows系统至少同时进行着记事本、Visual Studio和PowerPoint
这三个应用程序
这三个应用程序的界面
大家从这个截图可以看出来
是同时发生在这个屏幕上面的
那么也就是说它同时承载了这三个应用程序
所以它是多任务的
第四个特征 它是多种形式的输入输出手段
Windows应用程序的输入手段包括硬件方式和软件方式
硬件比如说大家非常熟悉的鼠标
当然有鼠标的左键和右键
当然还有中间的滚轮等等等等吧
还有键盘等物理输入设备
那么其他输入设备比如说
扫描仪、手写板等等等等
软件输入的典型的就是
使用定时器Timer的方式
每隔一个时间间隔就可以进行事先定义好的输入
那么这种输入属于自动输入
无需用户直接干预
Windows应用程序它的第五个特点是
设备无关的图形输出
Windows是多窗口的操作系统
是由操作系统来统一管理屏幕的输出
系统是使用的GDI
GDI就是Graphics Device Interface
GDI就是这个“图形设备接口”的英文缩写
进行输出的
那这样它屏蔽掉了不同设备的差别
比如说把你编辑好的文本文件保存到你的硬盘上
然后你可以接到不同的打印机上
当然前提是相关打印机的驱动程序
已经在你这个机器里面安装过了
对于不同的打印机
GDI只要将数据传输给驱动程序就可以了
然后由驱动程序产生相关的命令
进行图形的绘制
-讨论实录
--0-0
-1-1 Windows应用程序的特点
--1-1
-1-2 可视化编程
--1-2
-1-3 关于API
--1-3-1
--1-3-2
-1-4 Windows应用程序组成及编程步骤
--1-4-1
--1-4-2
-1-5 应用程序举例
--1-5-1
--1-5-2
--1-5-3
-02-1 Windows图形设备接口
-02-2 绘图工具与颜色
-02-3 常用绘图函数
-02-4 例题和作业
-第2章源代码
--外部链接
--外部链接
-3-1 设置文本的设备环境
-3-2 文本的输出过程
-3-3 例题和作业
-第3章源代码
--外部链接
-4-1 Windows 应用程序中的键盘与鼠标
--4-1
-4-2 键盘的操作应用举例
--4-2
-4-3 例题
--4-3
-4-3 鼠标在应用程序中的应用
--4-3
-4-4 例题4-4
--4-4
-第4章源代码
--外部链接
-5-1 菜单和加速键资源及其应用
--5-1
-5-1(例1)
--5-1(例1)
-5-2 位图资源及其应用
--5-2
-5-3 对话框资源及其应用
--5-3-1
--5-3-2
-5-4 图标资源的应用
--5-4
-第5章源代码
--外部链接
-第一次作业
--第一次作业--作业
-第二次作业
--第二次作业--作业
-第三次作业
--第三次作业--作业