****View.cpp
void C****View::OnPaint()
{
CPaintDC* pDC=new CPaintDC(this); // 创建设备上下文
CBitmap bmp;
RECT Rect;
RECT RectView;
POINT ptSize;
CDC dcmem;
BITMAP bm;
int b = bmp.LoadBitmap(IDB_BITMAP_BG); //将位图取出;
dcmem.CreateCompatibleDC(pDC); //创建兼容设备上下文。
dcmem.SelectObject(&bmp); //用设备上下文选择位图;
dcmem.SetMapMode(pDC->GetMapMode()); //设置映射方式;
GetObject(bmp.m_hObject, sizeof(BITMAP), (LPSTR)&bm); //映射位图;
GetClientRect(&Rect);
ptSize.x=bm.bmWidth;
ptSize.y=bm.bmHeight;
pDC->DPtoLP((LPPOINT)&ptSize,1); //设备单元to逻辑单元;
GetClientRect(&RectView);
CRect RectBmp = RectView;
//当位图宽度容纳不下的处理
if((RectView.right - RectView.left) > bm.bmWidth)
{
RectBmp.left = RectView.left + (RectView.right - RectView.left - bm.bmWidth) / 2;
RectBmp.right = bm.bmWidth;
}
else
{
RectBmp.left = RectView.left;
RectBmp.right = RectView.right - RectBmp.left;
}
//当位图高度容纳不下的处理
if((RectView.bottom - RectView.top) > bm.bmHeight)
{
RectBmp.top = RectView.top + (RectView.bottom - RectView.top - bm.bmHeight) / 2;
RectBmp.bottom = bm.bmHeight;
}
else
{
RectBmp.top = RectView.top;
RectBmp.bottom = RectView.bottom - RectBmp.top;
}
//加载视图到设备上下文中
pDC->StretchBlt(RectBmp.left, RectBmp.top, RectBmp.right,/
RectBmp.bottom, &dcmem, 0, 0, bm.bmWidth, bm.bmHeight,/
SRCCOPY);
//删除设备上下文
dcmem.DeleteDC();
}