还在苦苦敲代码开发APP?你out啦! 试试积木搭建APP吧~

VC 对话框背景色覆盖CEdit背景色的解决方法

来源:清泛原创     2016-11-03 09:05:46    人气:     我有话说( 0 人参与)

对话框不设置背景色时,CEdit自绘背景色正常(CEdit自绘请参考《MFC CEdit自绘、MFC圆角输入框》),但是对话框如何在OnCtlColor中设置背...

对话框不设置背景色时,CEdit自绘背景色正常(CEdit自绘请参考《MFC CEdit自绘、MFC圆角输入框》),但是对话框如何在OnCtlColor中设置背景色(返回HBRUSH画刷)时,CEdit的背景色会被覆盖,而且再怎么绘制CEdit的背景色也无效,如图:
 其实设置了CEdit背景色为白色

解决方法:
在OnCtlColor设置对话框背景色时,对Edit控件进行例外处理,即使用原色,代码如下:

//页面背景色
HBRUSH CDemoView::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
	HBRUSH hbr = CFormView::OnCtlColor(pDC, pWnd, nCtlColor);

	// TODO:  在此更改 DC 的任何特性

	//不变色
	if (nCtlColor == CTLCOLOR_EDIT)
		return hbr;

	// TODO:  如果默认的不是所需画笔,则返回另一个画笔
	return m_brushBg;
}
这样,所有的Edit控件背景色自绘生效,如图:

控件类型的宏定义:

CTLCOLOR_BTN 按钮控件

CTLCOLOR_DLG 对话框

CTLCOLOR_EDIT 编辑框

CTLCOLOR_LISTBOX 列表框

CTLCOLOR_MSGBOX 消息框

CTLCOLOR_SCROLLBAR 滚动条

CTLCOLOR_STATIC 静态文本


当然也可以对指定ID的单个控件进行特殊设置:

if(pWnd->GetDlgCtrlID() == IDC_STATIC1) 
...

MFC 对话框 背景色 CEdit

注:本文为本站或本站会员原创优质内容,版权属于原作者及清泛网所有,
欢迎转载,转载时须注明版权并添加来源链接,谢谢合作! (编辑:admin)
分享到: