我的代码如下
HBITMAP hBmp = (HBITMAP)LoadImage(AfxGetInstanceHandle(), m_strFileName, IMAGE_BITMAP,
0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION);
if (hBmp == NULL)
{
return;
} CWnd *hWnd = GetDlgItem(IDC_PIC); CRect rc;
hWnd->GetClientRect(&rc);

BITMAP bmp;
HDC hDesDC = hWnd->GetDC()->m_hDC;
HDC hSrcDC = CreateCompatibleDC(hDesDC);
GetObject(hBmp, sizeof BITMAP, &bmp);
::SetStretchBltMode(hDesDC, COLORONCOLOR);
::StretchBlt(hDesDC, rc.top, rc.left, rc.right, rc.bottom
,hSrcDC, 0, 0, bmp.bmWidth, bmp.bmHeight, +SRCCOPY);
DeleteDC(hDesDC);
DeleteDC(hSrcDC);
DeleteObject(hBmp);
运行程序啥都没有,求解……

解决方案 »

  1.   

    实现OnEraseBkgnd函数。
    CBitmap m_BkGndBmp;
    m_BkGndBmp.LoadBitmap(IDB_BITMAP_BK);
    BOOL CPictureDlg::OnEraseBkgnd(CDC* pDC) 
    {
    // TODO: Add your message handler code here and/or call default
    CRect rcrect;
    GetClientRect(&rcrect);
    BITMAP bm;
    m_BkGndBmp.GetBitmap(&bm);
    CDC memDC;
    memDC.CreateCompatibleDC(pDC);
    CBitmap* pOldBmp=memDC.SelectObject(&m_BkGndBmp);
    pDC->StretchBlt(0,0,rcrect.Width(),rcrect.Height(),&memDC,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);
    memDC.SelectObject(pOldBmp);
    memDC.DeleteDC();
    return TRUE;
    //return CDialog::OnEraseBkgnd(pDC);
    }
      

  2.   

    To load a stand-alone resource (icon, cursor, or bitmap file)—for example, c:\myimage.bmp—set this parameter to NULL.
    HBITMAP hBmp = (HBITMAP)LoadImage(NULL, m_strFileName, IMAGE_BITMAP,
            0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION);
      

  3.   

    IDC_PIC是图像控件吗?
    不用这么麻烦的,用下面的代码试试:
    HBITMAP hBmp = (HBITMAP)LoadImage(AfxGetInstanceHandle(), m_strFileName, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION);
        if (hBmp == NULL)
        {
            return;
        }
        CStatic *hWnd = GetDlgItem(IDC_PIC);
        hWnd->SetBitmap(hBmp);

        
      

  4.   

    如果你只是想上个背景图而已,可以直接放个static控件,然后选择一个图就可以了。往上面可以直接放控件的。
      

  5.   

    你是要这个效果么
    http://blog.csdn.net/xianglitian/archive/2010/11/20/6023656.aspx