我正在尝试使用SetTextColor设置文本颜色 和on_wm_ctlcoloredit中使用SetBkColor的背景颜色 功能。但每当我尝试仅设置文本颜色时,输出实际上将背景绘制为文本不存在的黑色和文本存在的白色。我希望它是Windows窗体的浅灰色。如何获取Windows窗体的默认背景颜色?
答案 0 :(得分:4)
仅设置DC的文本颜色和背景颜色是不够的。处理任何WM_CTLCOLOR消息时,还需要返回正确背景颜色的画笔。最简单的方法是始终调用基类实现。
默认情况下,DC使用默认值(文本颜色为黑色,背景为白色)进行准备。而且因为您需要确定并返回画笔,所以没有默认值。
因此,要获取父窗口的画笔和设置,您可以将WM_CTLCOLORDLG发送到父窗口,您应该获得正确的文本颜色,背景颜色和画笔作为返回值。您可以使用CBrush :: FromHandle将其用作ON_WM_CTLCOLOR处理程序的返回值。
答案 1 :(得分:1)