SOFTIST 编程方法筆記编程方法筆記 目录


对话框的背景色与背景图(VC++)

本文是对话框背景色和背景图描画方法的笔记。通过使用背景色和背景图可是应用程序独具特色。

1.背景色

在CDialog的派生类比如叫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.背景图

在CDialog的派生类比如叫CBkTestDlg里,增加一个位图变量。
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();

    }
}