mfc修改对话框背景
修改对话框背景
第一种方法。
1.在对话框类声名1
CBrush m_bkBrush;
2.在InitDialog中添加代码1
2
3CBitmap tmpBitmap;
tmpBitmap.LoadBitmap(IDB_BITMAP_ASCENT); // IDB_BITMAP_ASCENT背景资源的ID
m_bkBrush.CreatePatternBrush(&bmp); // 创建背景刷
3。响应WM_CTCOLOR消息。在OnCtlColor增加代码 ,删除原有的1
2HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); return hbr;
return m_bkBrush; // 返回刚才创建的背景刷子
第二种方法
在对话上放置Picture Control控件,设置属性Type为Bitmap。Image为IDB_BITMAP_ASCENT(背景资源ID)
按ctrl+d,设置Picture Control控件的ID为1。
第三种方法
响应WM_PANT消息在OnPant()中绘制背景,代码如下。1
2
3
4
5
6
7
8
9
10CPaintDC dc(this);
CBitmap bitmap;
bitmap.LoadBitmap(IDB_BITMAP_ASCENT); //IDB_BITMAP_ASCENT背景资源的ID
CBrush brush;
brush.CreatePatternBrush(&bitmap);
CBrush* pOldBrush = dc.SelectObject(&brush);
CRect rect;
GetWindowRect(rect); // 获取窗口大小
dc.Rectangle(rect); // rect为对话框窗口大小
dc.SelectObject(pOldBrush);
第四种方法
响应WM_PANT消息在OnPant()中绘制背景,使用StretchBlt()。1
2
3
4
5
6
7
8
9
10
11CPaintDC dc(this);
CBitmap bkBmp;
bkBmp.LoadBitmap(IDB_BITMAP_ASCENT);
CRect rect;
GetClientRect(&rect);//获得窗口客户区大小
BITMAP bitMap;//位图结构体
bkBmp.GetBitmap(&bitMap);//获得原图尺寸
CDC dcMem;
dcMem.CreateCompatibleDC(&dc);//创建兼容DC
dcMem.SelectObject(&bkBmp);//将位图选入DC
dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bitMap.bmWidth,bitMap.bmHeight,SRCCOPY); // 贴图