MFC C++ 中控件的背景颜色无法设置
Background color for controls in MFC C++ is unable to set
我正在尝试使用 SetTextColor 设置文本颜色
和背景颜色在 on_wm_ctlcoloredit 中使用 SetBkColor
功能。但是每当我尝试仅设置文本颜色时,输出实际上将背景绘制为黑色(文本不存在)和白色(文本存在)。我希望它是 windows 表格的浅灰色。如何获得 windows 表单的默认背景颜色?
设置DC的文字颜色和背景颜色不够。在处理任何 WM_CTLCOLOR 消息时,您还需要 return 画笔以获得正确的背景颜色。最简单的方法始终是调用基础 class 实现。
默认情况下,DC 使用默认值(文本颜色黑色,背景白色)准备。并且因为您需要确定 return 笔刷所以没有默认值。
因此要获取父级 window 的画笔和设置,您可以将 WM_CTLCOLORDLG 发送给您的父级 window 并且您应该获得正确的文本颜色、背景颜色和画笔作为 return 值。您可以使用 CBrush::FromHandle 将其用作您的 ON_WM_CTLCOLOR 处理程序的 return 值。
你指的是
GetSysColor(COLOR_STATIC)
?
在此处查看更多信息:GetSysColor
我正在尝试使用 SetTextColor 设置文本颜色 和背景颜色在 on_wm_ctlcoloredit 中使用 SetBkColor 功能。但是每当我尝试仅设置文本颜色时,输出实际上将背景绘制为黑色(文本不存在)和白色(文本存在)。我希望它是 windows 表格的浅灰色。如何获得 windows 表单的默认背景颜色?
设置DC的文字颜色和背景颜色不够。在处理任何 WM_CTLCOLOR 消息时,您还需要 return 画笔以获得正确的背景颜色。最简单的方法始终是调用基础 class 实现。
默认情况下,DC 使用默认值(文本颜色黑色,背景白色)准备。并且因为您需要确定 return 笔刷所以没有默认值。
因此要获取父级 window 的画笔和设置,您可以将 WM_CTLCOLORDLG 发送给您的父级 window 并且您应该获得正确的文本颜色、背景颜色和画笔作为 return 值。您可以使用 CBrush::FromHandle 将其用作您的 ON_WM_CTLCOLOR 处理程序的 return 值。
你指的是
GetSysColor(COLOR_STATIC)
?
在此处查看更多信息:GetSysColor