有个文件c:\x.bmp,怎样用Loadbitmap函数将它装入? 各位高手: 我用它来设置对话框的背景,可以总是在这个地方出错。怎么办?肯请指教。谢谢!新手 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 建议将该文件作为资源加载到程序中,然后就可以用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;} 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); 多线程openMp问题 请教CDC::TextOut无法显示 100分求CoCreateInstanceEx函数的用法 WINDOWS程序员的困惑 请教设备接口 VC中按钮只有单击双击事件,怎样实现VB中的鼠标DOWN Up 事件? 急!!!先行谢过!真的很急用,请大家一定帮忙! 没有了注释,程序就不好使?好奇怪!!!!!! ★★★如何用VC++写一段程序,得到当前操作系统的盘符??一百分等待的问题★★★ 求大神帮忙啊!在线等 DLL是否已经被COM所取代??? Com中调用另一个COM的问题 有感情了___100
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;
}
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
);