下述方法,对按钮均无用。 VS2008。
背景可以设置,但是按钮会失效。
// 设置背景色
<pre name="code" class="cpp">// OnPaint 函数中
CRect rect;
CPaintDC dc(this);
GetClientRect(rect);
dc.FillSolidRect(rect,RGB(0,255,50)); //设置为绿色背景
// 此函数已废弃
void SetDialogBkColor(COLORREF clrCtlBk = RGB(192, 192, 192), COLORREF clrCtlText = RGB(0, 0, 0));
调用的话,在 APP InitInstince 中的 DoModal 之前
// 颜色刷
BEGIN_MESSAGE_MAP()
ON_WM_CTLCOLOR()
.h 文件中声明:
CBrush brush;
HBRUSH OnCtlColor(CDC* pDC,CWnd* pWnd,UINT nCtlColor);
.CPP 中初始化:
m_brush.CreateSolidBrush(RGB(255,0,0)); // 设置红色画笔
// 实现
HBRUSH CMFC_COLORDlg::OnCtlColor(CDC* pDC,CWnd* pWnd,UINT nCtlColor)
{
return m_brush;
}
//按钮上看不到字了???
<pre name="code" class="cpp">//可以根据不同的控件类型返回不同的画刷,来实现不同控件颜色的设置
CTLCOLOR_BTN 按钮控件
CTLCOLOR_DLG 对话框
CTLCOLOR_EDIT 编辑框
CTLCOLOR_LISTBOX 列表控件
CTLCOLOR_MSGBOX 消息控件
CTLCOLOR_SCROLLBAR 滚动条控件
CTLCOLOR_STATIC 静态控件
HBRUSH CMFC_COLORDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
<pre name="code" class="cpp"><pre name="code" class="cpp"> if(nCtlColor==CTLCOLOR_BTN) //更改按钮颜色
{
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->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->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;
}
return hbr;
}