窗口背景

【勇芳软件工作室】汉化HomePreviousNext

窗口背景是在窗口开始绘制之前用于填充客户区域的颜色或图案。窗口背景覆盖了窗口移动到屏幕之前的任何内容,擦除现有图像并阻止应用程序的新输出与不相关的信息混合。

窗口画一个窗口的背景,或者给窗口一个机会,当应用程序调用{??989796012}时发送一个WM_ERASEBKGND消息。如果应用程序不处理该消息但将其传递给DefWindowProc,Windows将通过在窗口的类指定的后台画笔中填充该模式来擦除背景。如果画笔无效或该类没有后台画笔,Windows会在PAINTSTRUCT结构BeginPaint返回中设置FERASE成员,但不执行其他操作。如果需要,该应用程序有第二次画出窗口背景的机会。

如果处理WM_ERASEBKGND,应用程序应使用消息的【wParam中】参数绘制背景。此参数包含窗口的显示DC的句柄。绘制背景后,应用程序应返回非零值。这样可以确保当应用程序处理后续的WM_PAINT消息时,BeginPaint不会将PAINTSTRUCT结构的FERASE成员错误地设置为非零值(表示后台应该被擦除)。

应用程序可以通过在WNDCLASS结构的看一看hbrBackgroundlb成员注册具有RegisterClass功能的类时为其指定画笔句柄或系统颜色值来定义类背景画笔。GetStockObjectCreateSolidBrush功能可用于创建画笔句柄。系统颜色值可以是为SetSysColors功能定义的值之一。(在分配给成员之前,该值必须增加一个。)

即使定义了一个类背景画笔,应用程序也可以处理WM_ERASEBKGND消息。这在应用程序中是典型的,使应用程序可以更改给定窗口的窗口背景颜色或图案,而不会影响类中的其他窗口。在这种情况下,应用程序不得将消息传递给DefWindowProc.

因为系统使用窗口原点作为参考点绘制画笔,因此应用程序不必对齐画笔。给定这一点,用户可以移动窗口而不影响图案刷的对准。