控制颜色消息

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

控件和窗口可以通过使用特定的画笔和颜色来控制颜色消息,当他们希望对话框过程画出控件或其他窗口的背景时。当应用程序覆盖对话框及其控件中使用的默认颜色时,这可能很有用。以下是控制颜色消息,它们已经取代了WM_CTLCOLOR消息。

WM_CTLCOLORBTN
WM_CTLCOLORDLG
WM_CTLCOLOREDIT
WM_CTLCOLORLISTBOX
WM_CTLCOLORMSGBOX
WM_CTLCOLORSCROLLBAR
WM_CTLCOLORSTATIC

在控制颜色消息画出自己的背景之前,控件会向对话框程序发送控件颜色消息。该消息允许该过程指定要使用哪个画笔并设置背景和前景色。该过程通过返回刷柄来指定画笔。要设置背景颜色和前景色,该过程使用控件的显示设备上下文使用SetBkColorSetTextColor功能。控制颜色消息将显示设备上下文的句柄传递到消息的【wParam中】参数中的过程。

如果该过程不处理WM_ERASEBKGND消息,则Windows会向对话框过程发送WM_CTLCOLORDLG消息。预定义的对话框类没有类背景画笔,因此该消息允许过程定义自己的背景,而不必包含代码来执行工作。

在任何情况下,当对话框过程不处理控件颜色消息时,Windows将使用默认窗口颜色的画笔为除滚动条之外的所有控件和窗口绘制背景。应用程序可以通过将COLOR_WINDOW值传递给GetSysColor函数来检索默认窗口颜色。在绘制背景时,显示设备上下文的前景颜色设置为默认文本颜色(COLOR_WINDOWTEXT)。对于滚动条,Windows使用具有默认滚动条颜色(COLOR_SCROLLBAR)的画笔。在这种情况下,显示设备上下文的背景和前景颜色分别设置为白色和黑色。