如何设置对话框背景色以及控件颜色

要设置对话框背景颜色,必须重载OnCtlColor函数,其对应的Windows消息为WM_CTLCOLOR. 在OnCtlColor函数中返回一个自己定义的画刷。

可以根据不同的控件类型返回不同的画刷,来实现不同控件颜色的设置。具体有:

CTLCOLOR_MSGBOX 
CTLCOLOR_EDIT 
CTLCOLOR_LISTBOX
CTLCOLOR_BTN
CTLCOLOR_DLG
CTLCOLOR_SCROLLBAR
CTLCOLOR_STATIC
CTLCOLOR_MAX

 

下面是简单的例子:

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

 // TODO:  在此更改 DC 的任何属性
 if(nCtlColor==CTLCOLOR_BTN)          //更改按钮颜色
 {
  //pDC->SetBkMode(TRANSPARENT);
  pDC->SetTextColor(RGB(0,0,0));
  pDC->SetBkColor(RGB(121,121,255));
  HBRUSH b=CreateSolidBrush(RGB(121,121,255));
  return b;
 }
 else if(nCtlColor==CTLCOLOR_SCROLLBAR)  //
 {
  //pDC->SetBkMode(TRANSPARENT);
  pDC->SetTextColor(RGB(0,0,0));
  pDC->SetBkColor(RGB(233,233,220));
  HBRUSH b=CreateSolidBrush(RGB(233,233,220));
  return b;
 }
 else if(nCtlColor==CTLCOLOR_EDIT)   //更改编辑框
 {
  //pDC->SetBkMode(TRANSPARENT);
  pDC->SetTextColor(RGB(0,0,0));
  pDC->SetBkColor(RGB(165,254,236));
  HBRUSH b=CreateSolidBrush(RGB(165,254,236));
  return b;
 }
 else if(nCtlColor==CTLCOLOR_STATIC)  //更改静态文本
 {
  pDC->SetTextColor(RGB(0,0,0));
  pDC->SetBkColor(RGB(166,254,1));
  HBRUSH b=CreateSolidBrush(RGB(166,254,1));
  return b;
 }
 else if(nCtlColor==CTLCOLOR_DLG)   //更改对话框背景色
 {
  pDC->SetTextColor(RGB(0,0,0));
  pDC->SetBkColor(RGB(166,254,1));
  HBRUSH b=CreateSolidBrush(RGB(166,254,1));
  return b;
 }

 // TODO:  如果默认的不是所需画笔,则返回另一个画笔
 return hbr;
}

你可能感兴趣的:(如何设置对话框背景色以及控件颜色)