WM_PAINT消息的处理方式

 我来答
暖宝宝丶吙
2016-05-18 · TA获得超过417个赞
知道答主
回答量:174
采纳率:100%
帮助的人:62万
展开全部

对WM_PAINT的处理几乎总是从一个BeginPaint调用开始:hdc = BeginPaint (hwnd, &ps) ;而以一个EndPaint调用结束:EndPaint (hwnd, &ps) ;
在这两个调用中,第一个参数都是程序的窗口句柄,第二个参数是指向型态为PAINTSTRUCT的结构指针。PAINTSTRUCT结构中包含一些窗口消息处理程序,可以用来更新显示区域的内容。我们将在下一章中讨论该结构的各个字段。现在我们只在BeginPaint和EndPaint函数中用到它。
在BeginPaint调用中,如果显示区域的背景还未被删除,则由Windows来删除。它使用注册窗口类别的WNDCLASS结构的hbrBackground字段中指定的画刷来删除背景。一般, 这是一个白色备用画刷。这意味着,Windows将通过把窗口背景设定为白色来删除窗口背景。BeginPaint调用令整个显示区域有效,并传回一个“设备上下文句柄”。设备上下文是指实体输出设备(如视频显示器)及其设备驱动程序。在窗口的显示区域显示文字和图形需要设备上下文句柄。但是从BeginPaint传回的设备上下文句柄不能在显示区域之外绘图,读者可以试一试。EndPaint释放设备上下文句柄,使之不再有效。
如果窗口消息处理程序不处理WM_PAINT消息(这是很少见的),它们必须被传送给DefWindowProc。DefWindowProc只是依次调用BeginPaint和EndPaint,以使显示区域有效。调用完BeginPaint之后,WndProc接着调用GetClientRect:
GetClientRect (hwnd, &rect) ;
第一个参数是程序窗口的句柄。第二个参数是一个指针,指向一个RECT型态的rectangle结构。该结构有四个LONG字段,分别为left、top、right和bottom。GetClientRect将这四个字段设定为窗口显示区域的尺寸。left和top字段通常设定为0,right和bottom字段设定为显示区域的宽度和高度(像素点数)。WndProc除了将该RECT结构指针作为DrawText的第四个参数传递外,不再对它做其它处理

光派通信
2024-09-03 广告
对光传输设备进行调试和维护,需要掌握以下关键点:1. **熟悉设备性能**:深入了解OTN/DWDM等光传输产品的性能特点,确保能够熟练使用设备。2. **按规范操作**:依据产品说明书和维护手册进行调试和维护,确保操作步骤正确无误。3. ... 点击进入详情页
本回答由光派通信提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式