【发布时间】:2015-06-08 06:50:20
【问题描述】:
我正在尝试使用 SetTextColor 设置文本颜色 和背景颜色使用 on_wm_ctlcoloredit 中的 SetBkColor 功能。但是每当我尝试仅设置文本颜色时,输出实际上将背景绘制为黑色,文本不存在,而文本存在白色。我希望它是 Windows 窗体的浅灰色。如何获得窗体的默认背景颜色?
【问题讨论】:
我正在尝试使用 SetTextColor 设置文本颜色 和背景颜色使用 on_wm_ctlcoloredit 中的 SetBkColor 功能。但是每当我尝试仅设置文本颜色时,输出实际上将背景绘制为黑色,文本不存在,而文本存在白色。我希望它是 Windows 窗体的浅灰色。如何获得窗体的默认背景颜色?
【问题讨论】:
仅设置 DC 的文本颜色和背景颜色是不够的。当您处理任何 WM_CTLCOLOR 消息时,您还需要返回正确背景颜色的画笔。最简单的方法总是调用基类实现。
默认情况下,DC 准备好默认值(文本颜色黑色,背景白色)。并且因为您需要确定并返回画笔,所以没有默认值。
所以要获取父窗口的画笔和设置,你可以发送WM_CTLCOLORDLG到你的父窗口,你应该得到正确的文本颜色、背景颜色和画笔作为返回值。您可以使用 CBrush::FromHandle 将其用作您的 ON_WM_CTLCOLOR 处理程序的返回值。
【讨论】:
【讨论】: