MFC设置对话框背景图片

MFC设置对话框背景图片
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

你可能感兴趣的:(MFC设置对话框背景图片)