MFC的一个对话框中怎样设置背景为一个图片

来源:百度知道 编辑:UC知道 时间:2024/06/16 00:49:29
我在对话框中放了一个Picture Control,想把一个位图作为对话框背景,
在OnInitDialog()函数中写入这样的代码:
... ...
// 添加背景位图
((CStatic*)GetDlgItem(IDC_PICTURE))->SetBitmap(HBITMAP(m_bgBitmap));
运行结果没有出现那个位图,什么原因呢?
(m_bgBitmap为Dlg类成员变量,在类构造函数中就用m_bgBitmap.LoadBitmapA(IDB_BG_BITMAP);初始化了)
我能不能把一个位图放到Picture Box中,然后再把其他按钮之类控件放到它上边这样显示呢?

您好:
我觉得应该这样 ,把你需要的位图作为背景画刷
TestDlg.h中
CBrush m_brBk;//在public中定义

TestDlg.cpp中
在初始化函数OnInitDialog()中加入:
BOOL CTestDlg::OnInitDialog()
{
CDialog::OnInitDialog();
CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP2);
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;
}

在MFC中给对话框中设置背景图片,方法有多种,这里整理了三种,具体操作如下:

方法一:
1、声明成员变量CBrush m_brush;
2、在InitDialog中添加代码:
CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP1); //这个IDB_BITMAP1要自己添加
m_brush.CreatePatternBrush(&bmp);
3、重载对话框的OnCtlColor,改最后的返回值:
return (HBRUSH)m_brush