1.导入位图
新建一个项目TestBackground
资源视图中右键点击TestBackground.rc,添加资源,bitmap,导入,导入一张bmp位图

在资源视图中多了一个Bitmap文件夹,导入的位图id是IDB_BITMAP1

2.设置背景图片
在窗体的OnPaint函数中,加入以下代码
//获取窗体dc
CDC *pDC =GetDC();
CDC memDC;
//创建兼容dc
memDC.CreateCompatibleDC(pDC);
//加载bitmap图片
CBitmap bitmap;
bitmap.LoadBitmap(IDB_BITMAP1);
memDC.SelectObject(bitmap);
BITMAP bmp;
bitmap.GetBitmap(&bmp);
//获取窗体显示区域
RECT rc;
GetClientRect(&rc);
//获取窗体宽度和高度
int showWidth = rc.right-rc.left;
int showHeight = rc.bottom-rc.top;
//若不设置这个模式,图片会严重失真
pDC->SetStretchBltMode(COLORONCOLOR);
//将图像绘制到控件区域中
pDC->StretchBlt(rc.left,rc.top,showWidth,showHeight,&memDC,0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY);
释放GDI资源
bitmap.DeleteObject();
memDC.DeleteDC();
ReleaseDC(pDC);
或者
CPaintDC dc(this); // device context for painting
CRect rect;
GetClientRect(&rect);
CDC dcBmp; //定义并创建一个内存设备环境
dcBmp.CreateCompatibleDC(&dc); //创建兼容性DC
CBitmap bmpBackground;
bmpBackground.LoadBitmap(IDB_BITMAP1); //载入资源中的IDB_BITMAP1图片
BITMAP bitmap; //图片变量
bmpBackground.GetBitmap(&bitmap); //将图片载入位图中
CBitmap *pbmpOld = dcBmp.SelectObject(&bmpBackground); //将位图选入临时内存设备环境
//调用函数显示图片 StretchBlt显示形状可变
dc.SetStretchBltMode(COLORONCOLOR);
dc.StretchBlt(0, 0, rect.Width(), rect.Height(), &dcBmp, 0, 0, bitmap.bmWidth, bitmap.bmHeight, SRCCOPY);
//释放资源
bmpBackground.DeleteObject();
dcBmp.DeleteDC();