プログラミングメモ →目次

ダイアログの背景色と絵(VC++)

ダイアログの背景の色を変える、背景に絵を描画する方法のメモです。

1.背景色

CDialogの派生クラスCBkTestDlgを作成します。CBkTestDlgにCBrush m_brshBack;メンバー変数を追加します。

BOOL CBkTestDlg::OnInitDialog()関数の中に、下記のようにブラッシュの色を設定します。
m_brshBack.CreateSolidBrush(RGB(255, 128, 255));

WM_CTLCOLORメッセージのハンドルをオーバーライドします。
HBRUSH CBkTestDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
    if ( nCtlColor == CTLCOLOR_DLG )
    { 
        return (HBRUSH)m_brshBack; 
    }
    return hbr;
}

2.背景の絵

CBkTestDlgに、CBitmap m_bitmapBack;というメンバー変数を追加します。
CBitmap m_bitmapBack;

リソースエディタで、大きな絵(IDB_BITMAP1)を作ります。

BOOL CBkTestDlg::OnInitDialog()関数にビットマップをロードする処理を追加します。
m_bitmapBack.LoadBitmap(IDB_BITMAP1);

void CBkTestDlg::OnPaint()関数を下記のように修正します。
void CBkTestDlg::OnPaint() 
{
    if (IsIconic())
    {
        ... ...
        ... ...
    }
    else
    {
        CPaintDC dc(this);
        dc.DrawState(CPoint(0,0), CSize(318,256), m_bitmapBack, DST_BITMAP);
        CDialog::OnPaint();

    }
}