一 、添加OnEraseBkgnd函数
VS2005下,给窗口类添加 WMERASEBKGND消息的响应函数
二:给该函数添加代码:
// TODO: 在此添加消息处理程序代码和/或调用默认值
CRect rectbk; // 客户区的大小
CDC dcMen; // 内存设备描述表
CBitmap bmbk; // 位图对象
bmbk.LoadBitmap(IDB_BITMAP1); // 从资源加载位图 bitmap
// 得到位图bitmap的大小
BITMAP stBitmap;
bmbk.GetObject(sizeof(BITMAP),&stBitmap);
CSize bmsize(stBitmap.bmWidth,stBitmap.bmHeight);
dcMen.CreateCompatibleDC(pDC); // 创建兼容的设备描述表
// 选入新的位图对象并保存旧的位图对象
CBitmap *pold=dcMen.SelectObject(&bmbk);
GetClientRect(&rectbk);
// 取得客户区的大小
// 从内存向屏幕复制位图对象
pDC->StretchBlt(rectbk.left,rectbk.top,rectbk.Width(), rectbk.Height(),&dcMen,0,0,bmsize.cx,bmsize.cy,SRCCOPY);
dcMen.SelectObject(pold);
三、在OnPaint函数的else里添加代码:
else
{
//CDialog::OnPaint();
CPaintDC dc(this);
dc.SetStretchBltMode(COLORONCOLOR);
OnEraseBkgnd(&dc);
}
注:其中dc.SetStretchBltMode(COLORONCOLOR);是为了防止图片因为拉伸儿导致颜色失真