设置Dialog的背景颜色及其中控件的背景颜色和字体颜色

本文介绍了在Visual Studio中通过响应WM_CTLCOLOR消息来定制对话框背景颜色和文本颜色的方法,包括声明HBrush变量、初始化背景颜色,并在消息映射函数中进行设置。

  网上流传的方法是在应用程序类的InitInstance()函数中添加:

//设置对话框背景和文本颜色
SetDialogBkColor(RGB(160,180,220),RGB(0,0,0));

  但是SetDialogBkColor中VS 2003中已经不支持了,只有在VC中支持。

  在VS中的办法就是响应WM_CTLCOLOR消息,在消息映射函数中添加:

 

HBRUSH BroadcastCorrectionsPage::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
	HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

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

	// TODO:  如果默认的不是所需画笔,则返回另一个画笔
	switch(nCtlColor)
	{
	case CTLCOLOR_STATIC:
			 // pDC->SetBkMode(TRANSPARENT);经测试,这句没起作用,还是直接把背景颜色改为白色
			  pDC->SetBkColor(RGB(255,255,255));
		           pDC->SetTextColor(RGB(0,0,0));
			  break;
	case CTLCOLOR_DLG :
		return m_hbrush;
		break;
	default:
		break;
	}
	return hbr;
}


其中m_hbrush是在头文件中声明的HBrush变量:

HBRUSH m_hbrush;

OnInitDialog()函数中定义:

m_hbrush=CreateSolidBrush(RGB(255,255,255));


 参考:【1】http://www.cnblogs.com/clever101/archive/2009/05/24/1488441.html


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值