Using the WM_PAINT Message

你可以使用WM_PAINT消息来 主动重绘。 因为系统会发送WM_PAINT 消息给你的应用程序,当窗口必须更新你明确请求更新时

你可以在你程序里 使用这些代码 来更新一且新旧内容。

以下展示了 不同的 使用WM_PAINT消息的方法。

1.  WM_PAINT中 BeginPaint 和 EndPaint准备绘画, UpdateWindow及时更新

2.  当控件类型设置了 CS_HREDRAW | CS_VREDRAW, 在窗口改变大小的时候,都会发送WM_PAINT重绘。

3.  直接判断触发更新位置 是否在 指定区域  :  这个理解不到位,需要进一步翻译理解.RectVisible

4.  系统不是WM_PAINT的唯一途径。  InvalidateRectInvalidateRgn能直接产生WM_PAINT消息。他们使得全部或部分客户区域无效。(导致必须被重绘)

以下例子 在WM_CHAR消息时是整个客户区无效。 这使得用户可以看到输入的改变。这样处理的结果是 重绘消息会在其他任何消息前别执行。

5.  你可以自己绘制 你的最小化窗口样子 比起 系统的自动绘制。 应用程序在注册窗口类时会指定窗口icon, 系统会在窗口最小化时绘制这个icon。 如果你设置这个icon为NULL, 系统会发送WM_PAINT消息,当窗口最小化时, 迫使窗口处理程序来绘制窗口最小化的图案。 IsIconic 来判断保证,只有窗口最小化的WM_PAINT才调用绘制内容。

6. 你可以自己重绘background 比起系统帮你绘制. 许多应用程序 设置brush 和 system color 为窗口类的背景画刷 在窗口类注册的时候; 如果你设置了NULL背景画刷,系统会发送WM_ERASEBKGND消息给你的窗口处理过程 来重绘背景。

posted on 2011-04-12 00:28  oleeceo  阅读(205)  评论(0)    收藏  举报

导航