出处 http://topic.csdn.net/t/20030122/10/1382028.html 【尊重他人劳动成果,转载注明出处】
若要改变CView,CFrameWnd或CWnd对象的背景颜色需要处理WM_ERASEBKGND消息,下面就是一个范例代码:
BOOL CSampleView::OnEraseBkgnd(CDC* pDC)
{
//设置brush为希望的背景颜色
CBrush backBrush(RGB(255, 128, 128));
//保存旧的brush
CBrush* pOldBrush = pDC-> SelectObject(&backBrush);
CRect rect;
pDC-> GetClipBox(&rect);
//画需要的区域
pDC-> PatBlt(rect.left, rect.top, rect.Width(), rect.Height(), PATCOPY);
pDC-> SelectObject(pOldBrush);
return TRUE;
}
若要改变CFromView继承类的背景颜色,下面是一个范例代码:
HBRUSH CMyFormView::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
switch (nCtlColor)
{
case CTLCOLOR_BTN:
case CTLCOLOR_STATIC:
{
pDC-> SetBkMode(TRANSPARENT);
//不加任何处理或设置背景为透明
}
case CTLCOLOR_DLG:
{
CBrush* back_brush;
COLORREF color;
color = (COLORREF) GetSysColor(COLOR_BTNFACE);
back_brush = new CBrush(color);
return (HBRUSH) (back_brush-> m_hObject);
}
}
return(CFormView::OnCtlColor(pDC, pWnd, nCtlColor));
}