读书人

怎么得到位图对象

发布时间: 2012-02-09 18:22:27 作者: rapoo

如何得到位图对象?
我现在是将位图放在工程文件夹下的image文件夹里的,怎么在程序中得到image/earth.bmp对象呢?

[解决办法]
HDIB CDibImage::ReadDIBFile(CFile& file)
{
BITMAPFILEHEADER bmfHeader;
HDIB hDIB;
LPSTR pDIB;
DWORD dwBitsSize;

dwBitsSize = file.GetLength();// 获取DIB(文件)长度(字节)

// 尝试读取DIB文件头
if (file.Read((LPSTR)&bmfHeader, sizeof(bmfHeader)) != sizeof(bmfHeader))
{
return NULL;
}
// 判断是否是DIB对象,检查头两个字节是否是 "BM "
if (bmfHeader.bfType != DIB_HEADER_MARKER)
{
return NULL;
}
// 为DIB分配内存
hDIB = (HDIB) ::GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT, dwBitsSize);
if (hDIB == 0)
{
return NULL;
}

pDIB = (LPSTR) ::GlobalLock((HGLOBAL) hDIB);
if (file.ReadHuge(pDIB, dwBitsSize - sizeof(BITMAPFILEHEADER)) !=
dwBitsSize - sizeof(BITMAPFILEHEADER) )// 读象素
{
::GlobalUnlock((HGLOBAL) hDIB);
::GlobalFree((HGLOBAL) hDIB);
return NULL;
}

::GlobalUnlock((HGLOBAL) hDIB);
return hDIB;
}

读书人网 >C++

热点推荐