设为首页 加入收藏

TOP

视窗和讯息(二十三)
2010-12-30 21:09:07 来源: 作者: 【 】 浏览:17272
Tags:视窗 讯息
了整个WM_CREATE的处理。

WM_PAINT讯息
 

WndProc处理的第二个讯息为WM_PAINT。这个讯息在Windows程式设计中是很重要的。当视窗显示区域的一部分显示内容或者全部变为「无效」,以致於必须「更新画面」时,将由这个讯息通知程式。

显示区域的显示内容怎么会变得无效呢?在最初建立视窗的时候,整个显示区域都是无效的,因为程式还没有在视窗上画什么东西。第一条WM_PAINT讯息(通常发生在WinMain中呼叫UpdateWindow时)指示视窗讯息处理程式在显示区域上画一些东西。

在使用者改变HELLOWIN视窗的大小後,显示区域的显示内容重新变得无效。读者应该还记得,HELLOWIN中wndclass结构的style栏位设定为标志CS_HREDRAW和CS_VREDRAW,这样的格式设定指示Windows,在视窗大小改变後,就把整个视窗显示内容当成无效。然後,视窗讯息处理程式将收到一条WM_PAINT讯息。

当使用者将HELLOWIN最小化,然後再次将视窗恢复为以前的大小时,Windows将不会保存显示区域的内容。在图形环境下,视窗显示区域涉及的资料量很大。因此,Windows令视窗无效,视窗讯息处理程式接收一条WM_PAINT讯息,并自动恢复其视窗的内容。

在移动视窗以致其相互重叠时,Windows不保存一个视窗中被另一个视窗所遮盖的内容。在这一部分不再被遮盖之後,它就被标志为无效。视窗讯息处理程式接收到一条WM_PAINT讯息,以更新视窗的内容。

对WM_PAINT的处理几乎总是从一个BeginPaint呼叫开始:

hdc = BeginPaint (hwnd, &ps) ;

而以一个EndPaint呼叫结束:

EndPaint (hwnd, &ps) ;

在这两个呼叫中,第一个参数都是程式的视窗代号,第二个参数是指向型态为PAINTSTRUCT的结构指标。PAINTSTRUCT结构中包含一些视窗讯息处理程式,可以用来更新显示区域的内容。我们将在下一章中讨论该结构的各个栏位。现在我们只在BeginPaint和EndPaint函式中用到它。

在BeginPaint呼叫中,如果显示区域的背景还未被删除,则由Windows来删除。它使用注册视窗类别的WNDCLASS结构的hbrBackground栏位中指定的画刷来删除背景。在

首页 上一页 20 21 22 23 24 25 26 下一页 尾页 23/29/29
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇输出文字 下一篇Unicode简介

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: