如果想改变控件的颜色,希望每个控件的颜色都不一样,可以利用WM_CTLCOLOR消息来绘制各个控件的颜色
例如:
HBRUSH CMFCTESTDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: 在此更改 DC 的任何特性
// TODO: 如果默认的不是所需画笔,则返回另一个画笔
switch (nCtlColor)
{
case CTLCOLOR_DLG://对话框颜色
{
HBRUSH brush = CreateSolidBrush(RGB(255, 0, 0));
return brush;
}
case CTLCOLOR_EDIT: //编辑框颜色
{
HBRUSH brush = CreateSolidBrush(RGB(255, 255, 0));
return brush;
}
case CTLCOLOR_LISTBOX://列表框颜色
{
HBRUSH brush = CreateSolidBrush(RGB(0, 255, 0));
return brush;
}
case CTLCOLOR_BTN: //按钮颜色,还可以绘制字体颜色
{
HBRUSH brush = CreateSolidBrush(RGB(0, 0, 255));
return brush;
}
default: //还有很多.....
break;
}
return hbr;
}
不仅仅可以用CreateSolidBrush来创建画刷,还可以用CreateHatchBrush来创建阴影画刷绘制控件,还可以用CreatePatternBrush来创建位图画刷绘制控件.