我正在尝试使用SetTextColor设置文本颜色使用on_wm_ctlcoloredit中的SetBkColor和背景颜色函数。但是每当我尝试只设置文本颜色时,输出实际上将背景绘制为不存在文本的黑色和存在文本的白色。我期待它是浅灰色的窗户形式的颜色。如何获得windows窗体的默认背景色?
仅设置DC的文本颜色和背景颜色是不够的。当你处理任何WM_CTLCOLOR消息时,你还需要为正确的背景颜色返回一个笔刷。最简单的方法总是调用基类实现。
默认情况下,DC使用默认值(文本颜色为黑色,背景颜色为白色)。因为您需要确定并返回画笔,所以没有默认值。
所以要获得父窗口的笔刷和设置,你可以发送WM_CTLCOLORDLG到你的父窗口,你应该得到正确的文本颜色,背景颜色和笔刷作为返回值。你可以使用CBrush::FromHandle将其作为ON_WM_CTLCOLOR处理程序的返回值。
你指的是
GetSysColor(COLOR_STATIC)
?
查看更多信息:GetSysColor