请教如何根据icon句柄把icon数据存放到一个char数组里,并可以根据这个数组生成一个icon句柄!!!

mygo 2002-01-12 11:58:19
...全文
75 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
masterz 2002-01-13
  • 打赏
  • 举报
回复
大概就是这个样子了
LPBYTE lpBits=NULL;
long size=0;
HICON hicon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON1));
PICTDESC pdiconsrc;
pdiconsrc.cbSizeofstruct=sizeof(PICTDESC);
pdiconsrc.icon.hicon=hicon;
pdiconsrc.picType=PICTYPE_ICON;
IPicture* pIPicture=NULL;
HRESULT hr;
IDispatch* pDisp=NULL;
hr = OleCreatePictureIndirect(&pdiconsrc,
IID_IDispatch,
TRUE,
(void**)&pDisp);
if(SUCCEEDED(hr))
{
hr = pDisp->QueryInterface(&pIPicture);
if(SUCCEEDED(hr))
{
lpBits = (LPBYTE) GlobalAlloc(GMEM_MOVEABLE|GMEM_NODISCARD, 64*1024);
IStream* pStream;
CreateStreamOnHGlobal(lpBits,false,&pStream);
hr=pIPicture->SaveAsFile(pStream,false,&size);
if(pStream)
pStream->Release();
if(SUCCEEDED(hr)&&size>0)
{
//you can use
char* pchar=(char*)lpBits;
//icon is stored in pchar, length is size
//to create another hicon
//use OleLoadPicture(pStream,...)
//IPicture::get_Handle to get the icon handle
}
pIPicture->Release();
if(lpBits)
GlobalFree((HGLOBAL)lpBits);
}
pDisp->Release();
}
mygo 2002-01-13
  • 打赏
  • 举报
回复
可是ICONINFO中有两个bmp句柄如何处理?
azuo_lee 2002-01-13
  • 打赏
  • 举报
回复
储存:GetIconInfo
生成:CreateIconIndirect

它们里面都有一个参数ICONINFO,包含了Icon的所有相关信息。想怎么改就怎么改
kamphkb 2002-01-13
  • 打赏
  • 举报
回复
根据这个句柄可以得到一个HBITMAP,然后就可以得到这个icon的Data,然后就可以把这些Data存入char数组,其实,不用存了 :)

而且这个过程是可异de
mygo 2002-01-13
  • 打赏
  • 举报
回复
upup

1,649

社区成员

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

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