对话框不设置背景色时,CEdit自绘背景色正常(CEdit自绘请参考《MFC CEdit自绘、MFC圆角输入框》),但是对话框如何在OnCtlColor中设置背景色(返回HBRUSH画刷)时,CEdit的背景色会被覆盖,而且再怎么绘制CEdit的背景色也无效,如图:
其实设置了CEdit背景色为白色
解决方法:
在OnCtlColor设置对话框背景色时,对Edit控件进行例外处理,即使用原色,代码如下:
控件类型的宏定义:
CTLCOLOR_BTN 按钮控件
CTLCOLOR_DLG 对话框
CTLCOLOR_EDIT 编辑框
CTLCOLOR_LISTBOX 列表框
CTLCOLOR_MSGBOX 消息框
CTLCOLOR_SCROLLBAR 滚动条
CTLCOLOR_STATIC 静态文本
当然也可以对指定ID的单个控件进行特殊设置: