其实方法很简单:
1) 在重载的OnDraw函数中,
CRect recct;
GetClientRect(&rect);
pDC->FilledsolidRect(0,0,rect.right,rect.bottom,RGB(128,128,128));
这个过程直接写在OnEraseBkgnd 函数中也是一样的。
2) 在view类中重载 OnctlColor 函数,其实这个函数是(下面部分是来自网络)
在MFC类库提供了CWnd::OnCtlColor函数,在工作框架的子窗口被重画时将调用该成员函数.因此可以重载WM_CTLCOLOR消息的响应函数.此函数的原型:
[程序实现]
如果要指定某个特定控件可以这样写:ID为IDC_STATIC1
if (pWnd-> GetDlgCtrlID()==IDC_STATIC1)
{
// TODO: Return a different brush if the default is not desired
}
else
return hbr;
【注】
BLACK_BRUSH:黑色
WHITE_BRUSH:白色
GRAY_BRUSH:灰色
NULL_BRUSH:透明
HOLLOW_BRUSH :透明
以上是改变某个控件的颜色,如果只是设置View的背景色:HBRUSH CDrawProgramView::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CFormView::OnCtlColor(pDC, pWnd, nCtlColor);
/*if(nCtlColor == IDD_DRAWPROGRAM_FORM)
{
return (HBRUSH)m_brush.GetSafeHandle();
}*/ 这里这样写并没有实现自己想要的
hbr = CreateSolidBrush(RGB(128,128,128));
// TODO: 如果默认的不是所需画笔,则返回另一个画笔
return hbr;
}