已经知道bitmapinfo如何得到Cbitmap

zy2015036 2010-04-08 01:09:05
我已经读取了一段图像数据的bitmapinfo,并想通过Cbitmap 对象显示在clistctrl里面.请问这样如何转换?
...全文
48 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
vocanicy 2010-04-08
  • 打赏
  • 举报
回复
给个代码看看,返回HBITMAP
你在用CBitmap对象Attach就可以了


HBITMAP CreateDIBsectionFromDibFile (PTSTR szFileName)

{

BITMAPFILEHEADER bmfh ;

BITMAPINFO * pbmi ;

BYTE * pBits ;

BOOL bSuccess ;

DWORD dwInfoSize, dwBytesRead ;

HANDLE hFile ;

HBITMAP hBitmap ;


// Open the file: read access, prohibit write access


hFile = CreateFile (szFileName, GENERIC_READ, FILE_SHARE_READ,

NULL, OPEN_EXISTING, 0, NULL) ;

if (hFile == INVALID_HANDLE_VALUE)

return NULL ;

// Read in the BITMAPFILEHEADER

bSuccess = ReadFile (hFile, &bmfh, sizeof (BITMAPFILEHEADER),

&dwBytesRead, NULL) ;


if (!bSuccess || (dwBytesRead != sizeof (BITMAPFILEHEADER))

|| (bmfh.bfType != * (WORD *) "BM"))

{

CloseHandle (hFile) ;

return NULL ;

}


// Allocate memory for the BITMAPINFO structure & read it in

dwInfoSize = bmfh.bfOffBits - sizeof (BITMAPFILEHEADER) ;

pbmi = malloc (dwInfoSize) ;

bSuccess = ReadFile (hFile, pbmi, dwInfoSize, &dwBytesRead, NULL) ;

if (!bSuccess || (dwBytesRead != dwInfoSize))

{

free (pbmi) ;

CloseHandle (hFile) ;

return NULL ;

}

// Create the DIB Section

hBitmap = CreateDIBSection (NULL, pbmi, DIB_RGB_COLORS, &pBits, NULL, 0) ;

if (hBitmap == NULL)

{

free (pbmi) ;

CloseHandle (hFile) ;

return NULL ;

}


// Read in the bitmap bits

ReadFile (hFile, pBits, bmfh.bfSize - bmfh.bfOffBits, &dwBytesRead, NULL) ;

free (pbmi) ;

CloseHandle (hFile) ;

return hBitmap ;
}

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧