当前课程知识点:VC++面向对象与可视化程序设计(上):Windows编程基础 > 第1章 Windows应用程序基础 > 1-3 关于API > 1-3-1
返回《VC++面向对象与可视化程序设计(上):Windows编程基础》慕课在线视频课程列表
返回《VC++面向对象与可视化程序设计(上):Windows编程基础》慕课在线视频列表
我们这门课第一部分将主要介绍API函数
什么是API?API它的功能是哪些
API就是应用程序接口
它为应用程序提供了Windows系统
特殊的函数和数据结构
这里又提了一个新的概念 叫“数据结构”
那么在我们这一讲里面
就要给大家介绍几个在API编程中常用的数据结构
Windows应用程序可以利用标准的大量的API函数来调用系统的功能
而且是Windows系统与Windows应用程序之间的标准接口
那它有哪一些功能?
API函数的功能第一个就是窗口管理函数
它可以实现窗口的创建、移动和修改
第二个功能是系统服务函数
它能够实现与操作系统有关的多种功能
同时,它又是图形设备函数
能够实现与设备无关的图形操作功能
那我们利用Windows API函数编写Windows应用程序
在编写这些应用程序之前
有几个重要的概念需要大家很好地掌握
第一个就是“窗口”的概念
第二个是“事件驱动”的概念
第三个就是“句柄”
第四个就是“消息”
“窗口”概念我想大家非常熟悉
一个应用程序的窗口通常包括
控制菜单框、下拉菜单、工作区
以及最大化按钮、最小化按钮,还有垂直滚动条、水平滚动条
这些,我想大家都非常熟悉,我就不细说了
刚才大家看到“窗口”上的一系列部件
那我们说“窗口”是什么
它是系统管理应用程序的最基本的单位
它是应用程序与用户之间交互的接口环境
而且也是Windows应用程序基本的操作单元
那刚才说了,是应用程序与用户之间交互的接口环境
这一点我想大家都有体会
你们平时的操作不就是在“窗口”上进行操作吗
那实际上就是你与应用程序打交道
我们编写一个Windows应用程序
首先应当创建一个或者多个窗口
然后应用程序运行过程
也就是窗口内部、窗口与窗口之间以及窗口与系统之间
进行数据处理和数据交换的过程
我们讲第二个概念“事件驱动”
所谓“事件驱动”,我们简单地来说
就是你点了什么对象 即产生什么样的事件
点了什么对象电脑就执行什么样的操作
也就是说调用什么样的函数
Windows程序设计我们说是针对“事件驱动”进行的
我们说“事件驱动”是什么样的“事件驱动”?
它就会对事件的消息是一个描述
Windows程序的执行顺序取决于事件发生的顺序
程序的执行顺序是由顺序产生的消息驱动的
而“消息”是什么
“消息”是描述事件发生的信息
比如说按下鼠标或者按下键盘的某个键
这都是发生了消息
但是消息的产生 我们一直强调
往往并不要求有次序之分 而是根据需求
所以事件驱动这个编程方法
对于编写交互式的应用程序是很有用处的
它避免了死板的操作模式
第三个 我们来介绍一下“句柄”的概念
“句柄”是什么?“句柄”是一个8字节长
那么大家注意到我这里有一个括弧
相对64位操作系统
因为操作系统有64位、有32位,更早之前还有16位等等等等
那么针对不同的操作系统“句柄”的字节长度肯定是不一样的
那么在我们这门课里面
由于我们用的操作系统是Win8 64位企业版
所以“句柄”在我们课程的使用环境里面
是一个8字节长的数值
用于标识应用程序中的不同的对象和同类对象中不同的实例
那大家知道窗口、按钮、图标、滚动条我们可以认为是不同的对象
那同类对象用不同的实例又是什么意思
比如说根据应用程序的需求我们在应用程序的界面上
布置了三个水平滚动条
那么这三个水平滚动条完成不同功能的操作
由于它都是水平滚动条
我们给它认为它是水平滚动条控件
或者我们说得通俗一点,就是滚动条类的对象
比如说我们在应用程序界面上布置了三个水平滚动条
那么这三个水平滚动条都属于滚动条类的对象
或者说我们抽象为滚动条
但这三个滚动条由于完成不同的操作
它又都是滚动条
那么它就是同类对象中的不同的实例
就是每一个滚动条属于滚动条类的一个实例
所以这三个滚动条我们认为是滚动条对象中不同的实例
应该是这么理解
那么应用程序通过句柄访问相应的对象信息
那常用的句柄类型有哪一些?
比如说我们用HWND来标识窗口类的句柄
实际上 大家都学过C语言的话 都知道
任何变量都有它的数据类型
那实际这里我们指的句柄的标识比如HWND等等等等
你也可以认为是一种数据类型
比如说HBITMAP是位图句柄
那么你也可以给它理解为是一种数据类型
然后定义一个变量
那个变量就是句柄
HDC是设备环境句柄
以及光标、字体、图标、菜单、画笔、画刷、文件、当前实例等等等等
这里面我只是先给大家列出来
就是说在API编程中我们可能会经常地用到这些句柄类型
至于说这些句柄怎么使用
我们将结合API的程序设计
通过样例给大家介绍
还有一个很重要的概念就是消息
Windows应用程序是利用Windows消息 叫做Message
与应用程序和系统进行信息交换的
那消息里面主要牵扯到三个内容
一个是消息号是由事先定义好的消息名字来标识的
第二个就是消息的字参数wParam
是用于提供消息的附加信息
还有长字参数(lParam)也是用于提供消息的附加信息
那都是附加信息 他们之间的区别是什么
我们继续介绍
我们说附加信息是与具体消息号的值有关
在Windows系统中,它用结构体MSG来表示
所以这里给出的结构体MSG,它是一个自定义的结构体
这里有6个参数
第一个参数就是窗口句柄
大家看到用大写的HWND定义了小写的hwnd
那么大写的HWND实际上是数据类型
定义的就是窗口句柄
所以我们也称为句柄类型
第二个是消息值
第三个和第四个参数都是附加信息
然后是消息送到队列的时间
以及这个消息在屏幕的什么位置产生的
所以有个POINT
实际上POINT是一个位置消息
那POINT实际上它也是一个结构体
它只有两个成员x和y
实际上它就是定义了消息产生时候这个消息在屏幕中的位置
VC++中存在几种系统定义的消息分类
那不同的前缀符号经常用于消息宏识别
所以系统定义了消息宏的前缀
有这些前缀大家就很容易识别到这是什么消息
比如说BM开头的 就是Button Message
Button就是按钮了
那么表示按钮控制消息
CB就是Combo Box 组合框
以及DM、EM
EM就是编辑框了Edit Message
DM是Default Message 就是默认下压式的按钮控制消息
以及LB 是List Box 列表框
SBM就是Scroll Bars Message 就是滚动条
WM就是Window Message
对于这些前缀的识别稍微介绍一下
大家就明白它的规律了
那么Windows编程常用的消息主要有
窗口管理消息、初始化消息、输入消息、系统消息等等等等
这些 大家可以在微软提供的MSDN这个帮助文档里面看到
也可以在我们的教材中可以看到详细内容
-讨论实录
--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章源代码
--外部链接
-第一次作业
--第一次作业--作业
-第二次作业
--第二次作业--作业
-第三次作业
--第三次作业--作业