MFC为对话框添加背景图片(非picture control控件)

来源:互联网 发布:nginx负载均衡 编辑:程序博客网 时间:2024/04/28 09:44

项目来源:http://zhidao.baidu.com/link?url=f1UwHd52cb38WpROq5p2zDxwq7Fb_ayfC3u0Hoj2b_vOMbq4lYwH2pHMy4RFUhVFugLqKp9bF9tAhFYDhz2cQK

本文在这里希望把这个东西的设计说的详细一些。

在创建一个MFC的对话框项目后,可以在资源视图中添加位图,如不理解可以在百度中搜索mfc添加位图,相信应该很多,这里就不解释了。

假设我们载入的位图ID为IDB_BITMAP1

在我们对话框的类中的头文件添加如下变量:(如果是主对话框,应该就是C**Dlg.h的一个文件,如果是第二级或第3级的子对话框,需要右键添加一个新的类(如CBDlg继承自CDialog类,然后在在类的头文件中添加变量)
CBrush m_brBk;//public中定义
在相应的.CPP源文件中:
在初始化函数OnInitDialog()中加入: (如果是后来创建的子对话框没有初始化对话框可以在类向导中找到虚函数OnlnitDialog添加进代码,如果是vs2005或者2008没有类向导的IDE可以百度一下,很简单我记得是打开对话框类的.h头文件,如上文创建的C**Dlg.h文件。右键查看属性,在最上面一栏中应该有田间虚函数的按钮) (或者在构造函数)
BOOL CTestDlg::OnInitDialog()
{
    CDialog::OnInitDialog();
    CBitmap bmp;
    bmp.LoadBitmap(IDB_BITMAP);
    m_brBk.CreatePatternBrush(&bmp);
    bmp.DeleteObject();
    return TRUE; // return TRUE unless you set the focus to a control
}
再打开类向导,找到WM_CTLCOLOR消息,重载得对应函数OnCtlColor(),
添加如下:
HBRUSH CTestDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
    if (pWnd == this)
    {
    return m_brBk;
    }
    return hbr;
}

至此,为对话框添加背景图片就介绍完了。(wince, pc,vs2005,2008,2010测试均可用)

0 0