单文档背景图片加载

****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();

}

你可能感兴趣的:(c,文档)