请教一下如何从内存中载入BMP图像和光标? 完整的bmp和光标文件已经存贮在内存中, 请教一下如何从内存中载入BMP图像和光标? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 使用 DIB 相关API 加载BMP过程比较繁锁 内存中载入BMP图像http://shukaiyang.myweb.hinet.net/dibtips/index.html从内存中载入光标http://www.codeproject.com/bitmap/ColorCursorFromBmp.asp光标的格式可能要再分析一下,或者直接用位图 谢谢goodboyws的支持,http://shukaiyang.myweb.hinet.net/dibtips/index.html,这个页面我打不开:( 呵呵,http://shukaiyang.myweb.hinet.net/dibtips/index.html好像不对这里有个函数,你改一下就可以,看ReadFile之后的部分HBITMAP CreateBitmapObjectFromDibFile (HDC hdc, PTSTR szFileName) { BITMAPFILEHEADER * pbmfh ; BOOL bSuccess ; DWORD dwFileSize, dwHighSize, dwBytesRead ; HANDLE hFile ; HBITMAP hBitmap ; // Open the file: read access, prohibit write access hFile = CreateFile (szFileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, NULL) ; if (hFile == INVALID_HANDLE_VALUE) return NULL ; // Read in the whole file dwFileSize = GetFileSize (hFile, &dwHighSize) ; if (dwHighSize) { CloseHandle (hFile) ; return NULL ; } pbmfh = malloc (dwFileSize) ; if (!pbmfh) { CloseHandle (hFile) ; return NULL ; } bSuccess = ReadFile (hFile, pbmfh, dwFileSize, &dwBytesRead, NULL) ; CloseHandle (hFile) ; // Verify the file if (!bSuccess || (dwBytesRead != dwFileSize) || (pbmfh->bfType != * (WORD *) "BM") || (pbmfh->bfSize != dwFileSize)) { free (pbmfh) ; return NULL ; } // Create the DDB hBitmap = CreateDIBitmap (hdc, (BITMAPINFOHEADER *) (pbmfh + 1), CBM_INIT, (BYTE *) pbmfh + pbmfh->bfOffBits, (BITMAPINFO *) (pbmfh + 1), DIB_RGB_COLORS) ; free (pbmfh) ; return hBitmap ; } MFC中picture控件怎么使用? 怎样在MFC中实现监听功能 SHFileOperation如何让其只删除空目录? 关于CStringarray的存储,请高手指教 如何禁止重画窗口中的一部分? VC读写Excel问题 消息响应问题??谢谢! 大家看看我的代码,用星号括起来的部分是错误?本人一定给分?快快帮忙啊? juqiang来领分啊!感谢帮助!顺利过关! ActiveX中如何引用一个ActiveX? 如何让客户区的背景图像居中显示 请教一下如何从内存中载入BMP图像和光标
过程比较繁锁
http://shukaiyang.myweb.hinet.net/dibtips/index.html
从内存中载入光标
http://www.codeproject.com/bitmap/ColorCursorFromBmp.asp光标的格式可能要再分析一下,或者直接用位图
这里有个函数,你改一下就可以,看ReadFile之后的部分
HBITMAP CreateBitmapObjectFromDibFile (HDC hdc, PTSTR szFileName)
{
BITMAPFILEHEADER * pbmfh ;
BOOL bSuccess ;
DWORD dwFileSize, dwHighSize, dwBytesRead ;
HANDLE hFile ;
HBITMAP hBitmap ;
// Open the file: read access, prohibit write access
hFile = CreateFile (szFileName, GENERIC_READ, FILE_SHARE_READ, NULL,
OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, NULL) ;
if (hFile == INVALID_HANDLE_VALUE)
return NULL ;
// Read in the whole file
dwFileSize = GetFileSize (hFile, &dwHighSize) ;
if (dwHighSize)
{
CloseHandle (hFile) ;
return NULL ;
}
pbmfh = malloc (dwFileSize) ;
if (!pbmfh)
{
CloseHandle (hFile) ;
return NULL ;
}
bSuccess = ReadFile (hFile, pbmfh, dwFileSize, &dwBytesRead, NULL) ;
CloseHandle (hFile) ;
// Verify the file
if (!bSuccess || (dwBytesRead != dwFileSize)
|| (pbmfh->bfType != * (WORD *) "BM")
|| (pbmfh->bfSize != dwFileSize))
{
free (pbmfh) ;
return NULL ;
}
// Create the DDB
hBitmap = CreateDIBitmap (hdc,
(BITMAPINFOHEADER *) (pbmfh + 1),
CBM_INIT,
(BYTE *) pbmfh + pbmfh->bfOffBits,
(BITMAPINFO *) (pbmfh + 1),
DIB_RGB_COLORS) ;
free (pbmfh) ;
return hBitmap ;
}