Viewの背景色を変更する[WM_ERASEBKGND]

メモ:  Category:sdk_mfc

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;
}

bluenote by BBB