변경하고자 한다면 OnPaint 가 아닌 OnEraseBkgnd 함수에서 하셔야 합니다.
WM_ERASEBKGND 메시지는 대화상자기반에서 클래스위저드 목록에 나오지않습니다. 하지만, 설정
만 조금 바꾸시면 사용하실수 있습니다. ^^;; 일단, 클래스 위저드를 실행하고.. class info 탭을
선택하고, Message filter를 Dialog에서 window로 바꾸어 주시고 다시 Message Maps에 가시면
해당 메시지가 보일겁니다... ^^;
출처 : http://www.tipssoft.com/bulletin/board.php?bo_table=QnA&wr_id=10381
위와 같이 WM_ERASEBKGND 메세지를 이용하여,
OnEraseBkgnd를 사용한다.
BOOL CHoneybeeView::OnEraseBkgnd(CDC* pDC)
{
// TODO: Add your message handler code here and/or call default
CBrush backBrush(RGB(255, 255, 255)); // <- 흰색칼러로.
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; //흰 배경이 아닌 배경을 그리면 true, 흰 배경 false
}
OnEraseBkgnd 함수에 위와 같이 넣으면, RGB 컬러로 배경이 지정되게 된다.
OnEraseBkgnd는 OnDraw와 달리, 배경을 그려주는 것이라서,
새로 배경을 그리게 될 때, 다른 탭 위에 나타나지 않는 듯하다.
OnDraw의 경우, 새로 그릴 때, 탭 위에 잠시 나타났다 사라지지만,
OnEraseBkgnd의 경우는 그렇지 않다.