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的唯一途径。 InvalidateRect和InvalidateRgn能直接产生WM_PAINT消息。他们使得全部或部分客户区域无效。(导致必须被重绘)
以下例子 在WM_CHAR消息时是整个客户区无效。 这使得用户可以看到输入的改变。这样处理的结果是 重绘消息会在其他任何消息前别执行。
5. 你可以自己绘制 你的最小化窗口样子 比起 系统的自动绘制。 应用程序在注册窗口类时会指定窗口icon, 系统会在窗口最小化时绘制这个icon。 如果你设置这个icon为NULL, 系统会发送WM_PAINT消息,当窗口最小化时, 迫使窗口处理程序来绘制窗口最小化的图案。 IsIconic 来判断保证,只有窗口最小化的WM_PAINT才调用绘制内容。
6. 你可以自己重绘background 比起系统帮你绘制. 许多应用程序 设置brush 和 system color 为窗口类的背景画刷 在窗口类注册的时候; 如果你设置了NULL背景画刷,系统会发送WM_ERASEBKGND消息给你的窗口处理过程 来重绘背景。