当前课程知识点:VC++面向对象与可视化程序设计(上):Windows编程基础 > 第2章 Windows的图形设备接口及Windows绘图 > 02-1 Windows图形设备接口 > 02-1-3 获得设备环境方法
返回《VC++面向对象与可视化程序设计(上):Windows编程基础》慕课在线视频课程列表
返回《VC++面向对象与可视化程序设计(上):Windows编程基础》慕课在线视频列表
下面我们来了解一下如何获得设备环境
获取设备环境是应用程序输出图形的先决条件
常用的两种方法,一个是调用BeginPaint的函数
还有一个是调用GetDC这个函数
我们先来了解一下调用BeginPaint函数
应用程序响应PAINT消息时,主要是通过调用BeginPaint函数获取设备环境
也就是说在你可见到的界面里面
或者说的更直白一点,在你看到的屏幕上会有很多窗口
那么每一个窗口都有一个唯一的句柄来标识它
所以在BeginPaint里面,第一个参数实际上就是说你哪一个窗口发送的刷新请求
就把发送刷新请求的那个窗口的句柄,或者说指向这个窗口的句柄,作为它的参数
那么刷新过程中,是要获取无效区域的
所以这里,第二个参数就是PAINTSTRUCT它的这个结构的一个变量
它代表了无效区域
所以返回值就是这个hDC设备环境
当系统获取设备环境时,它系统会自动的去填写这个ps结构,来标识无效矩形区
然后我们对无效矩形区进行刷新
由BeginPaint函数获取的设备环境,要调用EndPaint函数来释放掉
这个EndPaint也是两个参数,跟BeginPaint的参数是一样的,这里就不多说了
刚才说的是绘图工具,是用PAINT消息驱动,那么我们用BeginPaint和EndPaint来处理
那么如果不是由PAINT消息来驱动,那么这个时候,我们就调用GetDC函数获取设备环境句柄
那么同样,它获取了设备环境句柄后,由于它不是由WM_PAINT消息驱动
所以它的参数里面只有窗口的句柄而并没有填写ps结构
由GetDC函数获取的设备环境它完成工作之后要用ReleaseDC函数来释放
所以这里列了一张表
给大家介绍BeginPaint和GetDC它两个都是获取设备环境
在使用环境上来说,BeginPaint函数只用于图形刷新时获取设备环境
而GetDC就比较广泛了
在操作区域上,使用BeginPaint的函数获取设备环境后,操作区域为无效区域
而用GetDC函数获取设备环境后,它操作的区域是整个用户区
所以大家注意到GetDC函数,它的参数只有窗口句柄
因为它不存在无效矩形区的问题,它操作的区域是整个用户区
所以从另外一个角度来说,那整个用户区都被刷新,不论有没有覆盖,我们都认为是无效区域
所用的函数上,一个用的是EndPaint,一个用的是ReleaseDC。
这两个函数的使用,在后面的操作过程中会经常用到
希望大家能够很好的了解一下它们的区别
-讨论实录
--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章源代码
--外部链接
-第一次作业
--第一次作业--作业
-第二次作业
--第二次作业--作业
-第三次作业
--第三次作业--作业