从位图文件数据流创建位图

qifa 2009-04-02 03:19:04
问题描述:
我的位图加密后, 保存到外部, 程序运行时, 解密它们
解密后返回位图文件数据BYTE*指针
我想从这个数据指针创建位图, 如何创建?

最好不要自己去识别位图文件格式
...全文
244 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
qifa 2009-04-03
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 ssli 的回复:]
赞同 cnzdgs的答案

Bitmap的文件都有一个file information, 叫做BITMAPFILEHEADER,你可以从这个结构得到bitmap的color data,然后调用CreateBitmap返回一个HBITMAP句柄
[/Quote]

我就是想问问有没有更加简单直接的办法
现在也只能这样了
lxl843 2009-04-03
  • 打赏
  • 举报
回复
我还以为你想把解密后的文件写到文件夹内
ssli 2009-04-03
  • 打赏
  • 举报
回复
赞同 cnzdgs的答案

Bitmap的文件都有一个file information, 叫做BITMAPFILEHEADER,你可以从这个结构得到bitmap的color data,然后调用CreateBitmap返回一个HBITMAP句柄
qifa 2009-04-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lxl843 的回复:]
直接用CFile二进制方式读写文件就可以了
C/C++ codechar*pBuf=NULL;
SafeArrayAccessData( varDate.parray, (void**)&pBuf );
memcpy( pBuffer, pBuf, nSize );//pBuffer为你的文件数据BYTE*指针SafeArrayUnaccessData( varDate.parray );
CFile fFile( m_strAppPath+strFieldName , CFile::modeCreate|CFile::modeReadWrite );
fFile.Write(pBuf,nSize);
fFile.Close();
delete []pBuffer;
pBuf=0;
[/Quote]

这位朋友弄反了吧
我是想从BMP文件数据的指针构造出一个HBITMAP
lxl843 2009-04-03
  • 打赏
  • 举报
回复
直接用CFile二进制方式读写文件就可以了
char *pBuf	= NULL;
SafeArrayAccessData( varDate.parray, ( void ** )&pBuf );
memcpy( pBuffer, pBuf, nSize );//pBuffer为你的文件数据BYTE*指针
SafeArrayUnaccessData( varDate.parray );
CFile fFile( m_strAppPath + strFieldName , CFile::modeCreate | CFile::modeReadWrite );
fFile.Write(pBuf,nSize);
fFile.Close();
delete []pBuffer;
pBuf=0;
qifa 2009-04-03
  • 打赏
  • 举报
回复
可能我没有表述清楚
我的问题简单的说就是这样:
有文件1.bmp, 假设它的长度是1024bytes
我在内存分配1024bytes, 然后把1.bmp全部读入到内存, 返回指针p
我如何从p得到一个HBITMAP
cnzdgs 2009-04-03
  • 打赏
  • 举报
回复
CreateBitmap或CreateBitmapIndirect等。
jameshooo 2009-04-02
  • 打赏
  • 举报
回复
完全取决于你加密的是什么,解密后就是什么,过程完全对称。
谁知道你加密的是什么?

15,978

社区成员

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

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