各位高手:
    我用它来设置对话框的背景,可以总是在这个地方出错。怎么办?肯请指教。谢谢!新手

解决方案 »

  1.   

    建议将该文件作为资源加载到程序中,然后就可以用CBitmap 的Load方法读出。也可以将文件带上,用下面的方法读出
    HBITMAP LoadBitmapFromFile(LPCTSTR szFile)
    {
    CFile file;
    if(!file.Open(szFile, CFile.modeRead)){
    return NULL;
    }
    BYTE* pBitmap;
    int nLen = file.GetLength();
    pBitmap = new BYTE[nLen]; file.Read(pBitmap, nLen);
    file.Close();
    if (pBitmap[0]!='B' && pBitmap[1]!='M'){
    delete[] pBitmap;
    return NULL;
    }
    BITMAPFILEHEADER* pbmfh = (BITMAPFILEHEADER*)pBitmap;
    BYTE* pColorsData = pBitmap + sizeof(BITMAPFILEHEADER); BITMAPINFOHEADER *pInfoHdr = (BITMAPINFOHEADER *)pColorsData;
    pColorsData = pBitmap + pbmfh->bfOffBits; CWnd *pDesk = CWnd::GetDesktopWindow();
    CDC *pDeskDC = pDesk->GetWindowDC(); HBITMAP hBitmap = CreateDIBitmap(pDeskDC->m_hDC, pInfoHdr, CBM_INIT, 
    pColorsData,  (PBITMAPINFO)pInfoHdr, DIB_RGB_COLORS);  VERIFY(pDesk->ReleaseDC(pDeskDC)); delete[] pBitmap;
    return hBitmap;
    }
      

  2.   

    HBITMAP hBitmap = (HBITMAP) LoadImage(NULL, _T("c:\\x.bmp"), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION | LR_DEFAULTSIZE);LoadImageThe LoadImage function loads an icon, cursor, animated cursor, or bitmap.HANDLE LoadImage(
      HINSTANCE hinst,   // handle to instance
      LPCTSTR lpszName,  // name or identifier of the image
      UINT uType,        // image type
      int cxDesired,     // desired width
      int cyDesired,     // desired height
      UINT fuLoad        // load options
    );