CView中响应2个消息:
ON_WM_ERASEBKGND()
ON_WM_CTLCOLOR()
例子:
.h
afx_msg HBRUSH OnCtlColor(
CDC* pDC,
CWnd* pWnd,
UINT nCtlColor
);
afx_msg BOOL OnEraseBkgnd(CDC* pDC) ;
DECLARE_MESSAGE_MAP()
.cpp
BEGIN_MESSAGE_MAP(CMapConfig_Tool_SubFormView, CFormView)
ON_WM_ERASEBKGND()
ON_WM_CTLCOLOR()
END_MESSAGE_MAP()
BOOL CMapConfig_Tool_SubFormView::OnEraseBkgnd(CDC* pDC)
{
CBrush* pOldBrush = pDC->SelectObject(GetBkBrush());
CRect theClip;
pDC->GetClipBox(&theClip);
pDC->PatBlt(theClip.left,theClip.top,theClip.Width(),theClip.Height(),PATCOPY);
pDC->SelectObject(pOldBrush);
return TRUE;
}
HBRUSH CMapConfig_Tool_SubFormView::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH m_brMine ;
switch(nCtlColor)
{
case CTLCOLOR_EDIT:
//pDC->SetBkColor(RGB(200,200,200));
pDC->SetBkMode(1);
//m_brMine = GetBkBrush()->operator HBRUSH();
//break;
case CTLCOLOR_STATIC:
case CTLCOLOR_LISTBOX:
case CTLCOLOR_DLG:
case CTLCOLOR_BTN:
case CTLCOLOR_MSGBOX:
case CTLCOLOR_SCROLLBAR:
pDC->SetBkColor(m_bkColor);
m_brMine = GetBkBrush()->operator HBRUSH();
break;
default:
m_brMine = CFormView::OnCtlColor(pDC, pWnd, nCtlColor);
break;
}
return m_brMine ;
}