mfc如何从内存buffer中创建HICON和HCURSOR和HBITMAP

Coder.Z 2016-04-27 12:53:31
内存中有一段buffer,相当于从将x.cur文件或者x.ico文件或者x.bmp文件读取到内存中的内容,也相当于是加入到x.rc文件中的资源,有什么方法可以从这段内存数据创建HCURSOR或者HICON或者HBITMAP?有相应的API吗?
...全文
337 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Coder.Z 2016-05-09
  • 打赏
  • 举报
回复
@schlafenhamster,谢谢大神指点。目前用了曲线救国的实现,先将buffer保存成临时文件,再从文件创建了。所以好久没过来看帖,现在的问题是,我只有这个buffer,并不知道width和height,有什么方式可以获取到这些信息吗?
schlafenhamster 2016-05-09
  • 打赏
  • 举报
回复
cursor 和 icon 好像是 正方 的 ,即 w=h
赵4老师 2016-05-09
  • 打赏
  • 举报
回复
总能在.cur文件中某个偏移处读取其宽和高吧。
schlafenhamster 2016-04-27
  • 打赏
  • 举报
回复

	void CreateCursor(DWORD dwXHotSpot,DWORD dwYHotSpot,int nWidth,int nHeight,WORD bmMaskPlanes,WORD bmMaskBitsPixel,WORD bmColorPlanes,WORD bmColorBitsPixel,BYTE * pMaskBits,BYTE * pColorBits)
	{
		// Clean up
		Destroy();

		// Create a mask bitmap
		HBITMAP hMask = NULL;
		CBitmap Mask;
		if (pMaskBits)
		{
			Mask.CreateBitmap(nWidth,nHeight,bmMaskPlanes,bmMaskBitsPixel,pMaskBits);
			hMask = (HBITMAP)Mask;
		}

		// Create a color bitmap
		HBITMAP hColor = NULL;
		CBitmap Color;
		if (pColorBits)
		{
			Color.CreateBitmap(nWidth,nHeight,bmColorPlanes,bmColorBitsPixel,pColorBits);
			hColor = (HBITMAP)Color;
		}

		// Create an Icon from the "color" and "mask" bitmaps
		ICONINFO IconInfo;
		IconInfo.fIcon = FALSE;
		IconInfo.xHotspot = dwXHotSpot;
		IconInfo.yHotspot = dwYHotSpot;
		IconInfo.hbmMask = hMask;
		IconInfo.hbmColor = hColor;

		// Create the cursor
		m_hCursor = CreateIconIndirect(&IconInfo);
	}
schlafenhamster 2016-04-27
  • 打赏
  • 举报
回复

	void CreateCursor(DWORD dwXHotSpot,DWORD dwYHotSpot,int nWidth,int nHeight,
WORD bmMaskPlanes,WORD bmMaskBitsPixel,WORD bmColorPlanes,
WORD bmColorBitsPixel,BYTE * pMaskBits,BYTE * pColorBits)

Coder.Z 2016-04-27
  • 打赏
  • 举报
回复
快来大神求救,快来快来
「已注销」 2016-04-27
  • 打赏
  • 举报
回复
倒是有几个 API 支持直接从内存创建: CreateIcon CreateIconIndirect CreateCursor CreateBitmap CreateBitmapIndirect 但这个内存并非原始数据,而是一个结构体。

15,979

社区成员

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

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