怎样让对话框显示一张图片

解决方案 »

  1.   

    BOOL CMyView::ShowBitmap(CString str)
    {
       CBitmap *bitmap;
    BITMAP  pBmpInfo;
    HBITMAP bmp =(HBITMAP)::LoadImage(AfxGetInstanceHandle(),str,IMAGE_BITMAP,0, 0, LR_CREATEDIBSECTION | LR_LOADFROMFILE);if(bmp==NULL)
    {
    MessageBox("LoadImage Error !");
    return FALSE;
    }bitmap=CBitmap::FromHandle(bmp);
    bitmap->GetBitmap(&pBmpInfo);
    CDC mem;
    CDC *pDC=GetDC();
    if(!mem.CreateCompatibleDC(pDC))
    {
    MessageBox("CreateCompatibleDC Error !");
    return FALSE;
    }if(! mem.SelectObject(bitmap))
    {
    MessageBox("SelectObject Error !");
    return FALSE;
    }
    CRect rect;
    GetClientRect(&rect);
    // int err = pDC->BitBlt(0,0,pBmpInfo.bmWidth,pBmpInfo.bmHeight,&mem,0,0,SRCCOPY);
    // int err = pDC->StretchBlt(0,0,pBmpInfo.bmWidth,pBmpInfo.bmHeight,&mem,0,0,rect.Width(),rect.Height(),SRCCOPY); 
            int err = pDC->StretchBlt(0,0,pBmpInfo.bmWidth,pBmpInfo.bmHeight,&mem,0,0,pBmpInfo.bmWidth,pBmpInfo.bmHeight,SRCCOPY); 
    if(err==0)
    {
    MessageBox("BitBlt Error !");
    return FALSE;
    }
    pDC->DeleteDC();
    mem.DeleteDC();
                    return TRUE;
    }
      

  2.   

    OnPaint调用BitBlt、StretchBlt函数贴图
      

  3.   

    二楼,人家楼主是要在对话框上显示图片....CBitmap bmp;
    CDC memdc;
    memdc.CreateCompatibleDC(pDC);
    CBitmap* pOldBitmap = memdc.SelectObject(&bmp);
    bmp.LoadBitmap(IDB_BITMAP);
    memdc.SelectObject(&bmp);
    pDC->BitBlt(0,0,360,200,&memdc,0,0,SRCCOPY);
    memdc.SelectObject(pOldBitmap);
    bmp.DeleteObject();
    memDC.DeleteDC();
    以上代码应写在OnPaint函数中
      

  4.   

    将图片设置为背景。OnEraseBkgnd(CDC*   pDC)重写
      

  5.   

    不会把整个对话框加一张图吧!
    void CVidiconSetTab::OnPaint()
    {
    CPaintDC dc(this); // device context for painting
    // TODO: 在此处添加消息处理程序代码
    CRect rect;
    GetClientRect(&rect);
    CBitmap bmp;
    bmp.LoadBitmap(IDB_ShowDlgBk);
    CBrush brush;
    brush.CreatePatternBrush(&bmp);
    CBrush *pOldbrush = dc.SelectObject(&brush);
    dc.Rectangle(0,0,rect.Width(),rect.Height());
    dc.SelectObject(pOldbrush);
    // 不为绘图消息调用 CDialog::OnPaint()
    }也可以用下面这个方法;
    先定义一个CBrush brush;//在.h文件里
    在初始化对话框中
    //加背景
    CBitmap bmp;
    bmp.LoadBitmap(IDB_ShowDlgBk);
    brush.CreatePatternBrush(&bmp);
    把OnCtlColor
    ruturn hbr;改为:return brush;