法一在对话框的WM_PAINT消息的响应处理函数OnPaint()中进行绘制背景色。
法二响应对话框的WM_CTLCOLOR消息,在消息处理函数OnCtlColor中进行绘制。
OnPaint法
(1)新建一个基于对话框的MFC应用程序ChangeBGColorTest1。
(2)打开ChangeBGColorTest1Dlg.cpp文件,在void CChangeBGColorTest1Dlg::OnPaint()的else下面加入绘制背景色的代码:
else
{
CRect rect;
CPaintDC dc(this);
GetClientRect(rect);
dc.FillSolidRect(rect, RGB(0, 0, 255)); //设置为蓝色背景
CDialogEx::OnPaint();
}
(3)保存工程并运行,运行结果如图所示:
OnCtlColor法
(1)新建一个基于对话框的MFC应用程序ChangeBGColorTest2。
(2)为类CChangeBGColorTest2Dlg添加一个成员变量:
CBrush m_br;
(3)为对话框添加WM_CTLCOLOR消息处理函数,代码如下:
HBRUSH CChangeBGColorTest2Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: 在此更改 DC 的任何特性
if (CTLCOLOR_DLG == nCtlColor)
return m_br; //返回蓝色刷子
// TODO: 如果默认的不是所需画笔,则返回另一个画笔
return hbr;
}
(4)在BOOL CChangeBGColorTest2Dlg::OnInitDialog()添加如下代码:
m_br.CreateSolidBrush(RGB(0, 0, 255));
(5)保存工程并运行,运行结果如图所示: