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函数。
发布评论