[kaze's test] プログラミングメモ |
→目次 |
ダイアログの背景色と絵(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();
}
}
|