Windows 编程基础(五)

本文介绍了Windows编程中WM_PAINT消息的重要性和处理方式,以及如何利用GDI进行图形绘制。重点讲解了UpdateWindow、BeginPaint、EndPaint函数的使用,无效和有效矩形的概念,以及TextOut函数进行文字输出的方法。同时,讨论了装置内容(DC)及其在绘图过程中的作用,包括获取和释放DC的函数GetDC和ReleaseDC。
摘要由CSDN通过智能技术生成

输出文字
WM_PAINT 讯息
大多数 Windows 程式在 WinMain 中进入讯息回圈之前的初始化期间都要呼
叫函式 UpdateWindow。Windows 利用这个机会给视窗讯息处理程式发送第一个WM_PAINT 讯息。这个讯息通知视窗讯息处理程式:必须绘制显示区域。

有效矩形和无效矩形
尽管视窗讯息处理程式一旦接收到 WM_PAINT 讯息之後,就准备更新整个显
示区域,但它经常只需要更新一个较小的区域(最常见的是显示区域中的矩形区域)。显然,当对话方块覆盖了部分显示区域时,情况即是如此。在擦除对话方块之後,需要重画的只是先前被对话方块遮住的矩形区域。
这个区域称为「无效区域」或「更新区域」。

GDI 简介
要在视窗的显示区域绘图,可以使用 Windows 的图形装置介面(GDI)函式。目前使用最为普遍的文字输出函式是TextOut。
TextOut (hdc, x, y, psText, iLength) ;
TextOut 向视窗的显示区域写入字串。psText 参数是指向字串的指标,
iLength 是字串的长度。x 和 y 参数定义了字串在显示区域的开始位置。hdc 参数是「装置内容代号」,它是 GDI 的重要部分。实际上,每个 GDI 函式都需要将这个代号作为函式的第一个参数。

装置内容
装置内容(简称为「DC」)实际上是 GDI 内部保存的资料结构。装置内容
与特定的显示设备(如视讯显示器或印表机)相关。对於视讯显示器,装置内容总是与显示器上的特定视窗相关。
装置内容中的有些值是图形「属性」,这些属性定义了 GDI 绘图函式工作
的细节。

取得装置内容代号(一):
在处理 WM_PAINT 讯息时,视窗讯息处理程式首先呼叫 BeginPaint。BeginPaint 函式一般在准备绘制时导致无效区域的背景被擦除。该函式也填入ps 结构的栏位。BeginPaint 传回的值是装置内容代号,这一传回值通常被保存在叫做 hdc 的变数中。.
一般地,处理 WM_PAINT 讯息的形式如下:

case WM_PAINT:
hdc = BeginPaint (hwnd, &ps) ;
使用 GDI 函式
EndPaint (hwnd, &ps) ;
return 0

在处理 WM_PAINT 讯息时,必须成对地呼叫 BeginPaint 和 EndPaint。如果视窗讯息处理程式不处理 WM_PAINT 讯息,则它必须将 WM_PAINT 讯息传递给Windows 中 DefWindowProc(内定视窗讯息处理程式)。
DefWindowProc 以下列代码处理 WM_PAINT 讯息:

case WM_PAINT:
BeginPaint (hwnd, &ps
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值