2024年4月5日发(作者:)

莫问剑  W

INDOWS

应用、系统编程

莫问剑先度出世,夺剑大会也随即拉开序幕。7月的你,快来参于黑防的七剑活动吧………

莫问前程有愧,只求今生无悔。

第一章 : 深入解析窗口和消息

本篇的所有代码,都是三种语言实现,每课配有详细的视频教程。

基础内功篇:

6. 深入学习绘制文本串 ——放大镜实例

大家好,在上节课中,我们已经学习了绘制文本串的知识,今天

我们深入的来学习相关绘制文本串的知识,并编写一个实例——放大

我想大家肯定也用过Windows自带的放大镜吧,是否也梦想自己

编写一个,并知其原理。今天这节课程,我们就解决这个问题。

关于设备环境的概念,我在上节课程中已经讲解过了。那么我也

说了关于如何操作设备环境DC的方法。

首先上节课程,我们在WM_PAINT消息中通过BeginPaint和

EndPaint消息来使无效区域有效,并通过返回的DC句柄来操作DC。

但是由于BeginPaint和EndPaint只能在WM_PAINT消息中使用,

所以我们必须通过其他的获得DC句柄的方法。上节课,我也说了几

种方法,不知道大家忘了没有。

GetDC —— ReleaseDC

这两个函数只能成对的出现,并且只能在单个消息中使用时,在

消息结束的时候必须释放。

(原理:据说Windows操作系统通过GetDC取得的HDC,因为当

系统要使用这些HDC的资源的时候,系统会随机的取得位于系统的

HDC并选择一个没有被占用的分配给用户使用,所以当用户通过

GetDC获得的HDC,一定记得在单个消息内通过ReleaseDC释放)。

并且BeginPaint 和GetDC取得都是窗口的DC,如果我们绘图的

对象是位图的话,我们则需要用CreateCompatibleDC函数。