MFC
背景を描画しない / 背景色を変更する


HomeProgramming TipsMFC Tips[MFC-005]

ゲームプログラミングのように背景に画像を貼る場合等では、
背景を描画してから OnPaint で全画面を描画し直すことになります。

これは効率が悪いだけでなく、画面がちらつく原因にもなります。
そこで背景色で消去する処理を無くしてしまいます。
やり方は簡単で単に OnEraseBkgnd() をオーバーライドして、
本来の描画処理を呼び出さずに return させてしまいます。

■ 背景を消去しない

BOOL CMyDlg::OnEraseBkgnd(CDC* pDC)
{
    return TRUE;
//  return CDialog::OnEraseBkgnd(pDC);
}



この OnEraseBkgnd のタイミングで背景を塗れば、好きな色に変更することができます。

■ 背景を任意の色に変更する

BOOL CMyDlg::OnEraseBkgnd(CDC* pDC)
{
    CRect rc;
    GetClientRect(&rc);
    pDC->FillSolidRect(&rc, RGB(0,0,0));    // 黒
    return TRUE;
//  return CDialog::OnEraseBkgnd(pDC);
}




 Copyright 2005 VALGUS. All Rights Reserved.