这里讲述两种改变MFC控件背景颜色的方法:

方法一:用OnCtlColor消息函数,改变特定控件的背景

首先在头文件的类中定义CBush类的变量 brush  如语句:CBrush brush;

然后在源文件的构造函数中初始化:brush.CreateSolidBrush(RGB(255,0,0));

RGB( , , ) 控制颜色,分别为红,绿,蓝,三个一样显示灰色背景,都为255为白色,都为0为黑色

然后再消息函数中写代码如下:

HBRUSH CFilePlayDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
 HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
 // TODO:  在此更改 DC 的任何属性
 // TODO:  如果默认的不是所需画笔,则返回另一个画笔
  if(pWnd->GetDlgCtrlID() == IDC_FILE_PLAY)
 {
  pDC->SetBkColor(RGB(0,0,0));
  HBRUSH brush = CreateSolidBrush(RGB(0,0,0));
  return brush;
 }
 return hbr;
}

方法二:

也用这个消息函数

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

{
    pDC->SetBkColor(RGB(0,0,0));
    HBRUSH b=CreateSolidBrush(RGB(0,0,0));
    return b;
  }

return hbr;

}

// 这里指定控件类型为静态类型,可以指定为其他类型,如CTLCOLOR_BTN 按钮控件 · CTLCOLOR_DLG 对话框 · CTLCOLOR_EDIT 编辑控件 · CTLCOLOR_LISTBOX 列表框控件 · CTLCOLOR_MSGBOX 消息框 · CTLCOLOR_SCROLLBAR 滚动条控件 · CTLCOLOR_STATIC 静态控件
 

这个方法省略了定义brush这个变量,直接在函数中用CreateSolidBrush生成一个画刷b,然后返回b。