面对现实,超越自己
逆水行舟,不进则退
posts - 269,comments - 32,trackbacks - 0
1、导入Bitmap资源图片,
2、重载WM_PAINT ——>void CXXXDlg::OnPaint()
3、添加如下代码:
    CRect   rect;   
    GetClientRect(&rect);   
    CDC   dcMem;   
    dcMem.CreateCompatibleDC(&dc);   
    CBitmap   bmpBackground;   
    bmpBackground.LoadBitmap(IDB_BITMAP_TOOL);   //IDB_BITMAP_TOOL是你自己的图对应的ID 

    BITMAP   bitmap;   
    bmpBackground.GetBitmap(&bitmap);   
    CBitmap   *pbmpOld=dcMem.SelectObject(&bmpBackground);   
    dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,   
        bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);   

其他方法:
重写WM_ERASEBKGND消息
BOOL CxxDialog::OnEraseBkgnd(CDC* pDC) 
{
   // CDialog::OnEraseBkgnd(pDC);//忘记要不要执行父类的这个了.
    CDC  memdc;
    memdc.CreateCompatibleDC(pDC);
    CBitmap bmp;
    CBitmap *pOldBmp;
    BITMAP bm;//用来保存图片的长宽等信息

    bmp.LoadBitmap(IDB_BITMAP1);
    bmp.GetBitmap(&bm);

    //将图片选进缓冲区
    pOldBmp = (CBitmap *)memdc.SelectObject(&bmp);

    //如果图片跟对话框的客户区一样大,直接用BitBlt就可以
    
//pDC->BitBlt(0, 0, rcWnd.Width(), rcWnd.Height(), &memdc, 0, 0, SRCCOPY);

    
//如果图片比对话框的背景小,就要用StrechBlt来拉伸图片
    pDC->StrechBlt(0, 0, rcWnd.Width, rcWnd.Height(), &memdc, 0, 0, bm.bmWidth,bm.bmHeight, SRCCOPY);

   //释放DC
    memdc.SelectObject(pOldBmp);
    memdc.DeleteDC();

    return TRUE; 
}

其他方法:
http://blog.csdn.net/ply421600/article/details/6692967
posted on 2013-05-29 11:02 王海光 阅读(3551) 评论(1)  编辑 收藏 引用 所属分类: MFC

FeedBack:
# re: MFC设置对话框背景图片
2016-05-25 11:28 | = =
博主拜托代码写的负责任一些好吗  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理