在这里总结一下VC中改变窗口和控件背景颜色的方法。
1、只要在C...App的函数InitInstance()中添加一行SetDialogBkColor(RGB(255,255,255),RGB(0,0,0));
就可以设置窗口的背景和里面text的颜色了。
2、响应对话框类中的WM_CTLCOLOR消息,在生成的函数OnCtlColor 中,添加你的实现代码:
如:
HBRUSH CGroupBoxDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH B = CreateSolidBrush(RGB(255,255,255));
switch(pWnd->GetDlgCtrlID())
{
case(IDC_STATIC1):
pDC->SetTextColor(RGB(255,0,192));//设置控件背景颜色
pDC->SetBkMode(TRANSPARENT);//设置控件背景为透明
return (HBRUSH)B;
break;
case(IDC_EDIT1):
pDC->SetTextColor(RGB(255,0,0));
pDC->SetBkMode(TRANSPARENT);
return (HBRUSH)B;
break;
case(IDC_CHOICE):
pDC->SetTextColor(RGB(255,128,0));
pDC->SetBkMode(TRANSPARENT);
return (HBRUSH)B;
break;
case(IDC_RADIO1):
pDC->SetTextColor(RGB(255,0,20));
pDC->SetBkMode(TRANSPARENT);
return (HBRUSH)B;
break;
default:
break;
}
return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);//若默认的不是所需画笔,则返回另一个画笔
}
或(个人感觉下面的方法很有用、也很实用)
HBRUSH CGroupBoxDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
if ( nCtlColor== CTLCOLOR_EDIT)
{
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(0,250,0));
HBRUSH B = CreateSolidBrush(RGB(255,255,255));
return (HBRUSH) B;
}
else if(nCtlColor== CTLCOLOR_STATIC)
{
pDC->SetBkColor(RGB(255,255,255));
pDC->SetTextColor(RGB(0,0,255));
}
return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
}
注:
CTLCOLOR_DLG 对话框
CTLCOLOR_EDIT 编辑框
CTLCOLOR_LISTBOX 列表框
CTLCOLOR_MSGBOX 消息框
CTLCOLOR_SCROLLBAR 滑动条
CTLCOLOR_STATIC 静态文本框、矩形等。
3、除了上述方法外还可以使用SetClassLong,这个函数可以实现动态改变的效果。
4、如果想改变按钮的背景和效果,就得另写实现的代码了,网上你可以找到一个别人写的CButtonST类,
可以下下来学一下,那可以将按钮做得很好看,在以下两个地址可以下载到
http://www.vckbase.com/code/viewcode.asp?id=1556或
http://www.vckbase.com/code/viewcode.asp?id=1750。
转自:http://hi.baidu.com/wp_sky_city/blog/item/852dc1ed0b079334279791ce.html