Viewの背景色を変更する[WM_ERASEBKGND]
Viewの背景色を変更するには、WM_ERASEBKGNDを捕まえて背景の描画を自分で行います。
OnEraseBkgnd()をオーバーライドし次のように塗りつぶしの処理を行います。
BOOL CxxxView::OnEraseBkgnd(CDC* pDC)
{
// ブラシの作成
CBrush brush(RGB(183, 216, 244));
// 新しいブラシを指定(元のブラシの保存)
CBrush* pOldBrush = pDC->SelectObject(&brush);
// 塗りつぶす領域を取得
CRect rect;
pDC->GetClipBox(&rect);
// 塗りつぶす
pDC->PatBlt(rect.left, rect.top, rect.Width(), rect.Height(), PATCOPY);
// ブラシを元に戻す
pDC->SelectObject(pOldBrush);
return TRUE;
}
おまけ - 背景を消去しないようにする
背景を消去しないようにするには、WM_ERASEBKGNDを捕まえてTRUEを返してあげます。TRUEを返すことで、これ以上消去する必要がないことを示します。
BOOL CxxxView::OnEraseBkgnd(CDC* pDC)
{
return TRUE;
}