社区
界面
帖子详情
求一将HICON句柄的资源保存为 ico文件的源码
zlhcc
2003-09-06 11:55:12
保存为 bmp 也行,但我保存为bmp的时候,背景总是黑色的,vckbase上徐景周的一个程序也是,保存为bmp图片后,北京也是黑色的。我要的是,颜色一点都不变。
...全文
123
6
打赏
收藏
求一将HICON句柄的资源保存为 ico文件的源码
保存为 bmp 也行,但我保存为bmp的时候,背景总是黑色的,vckbase上徐景周的一个程序也是,保存为bmp图片后,北京也是黑色的。我要的是,颜色一点都不变。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zlhcc
2003-09-09
打赏
举报
回复
多谢masterz
masterz
2003-09-08
打赏
举报
回复
void SaveIcon(HICON hIconToSave, LPCTSTR sIconFileName)
{
if(hIconToSave==NULL || sIconFileName==NULL)
return;
//warning: this code snippet is not bullet proof.
//do error check by yourself [masterz]
PICTDESC picdesc;
picdesc.cbSizeofstruct = sizeof(PICTDESC);
picdesc.picType = PICTYPE_ICON ;
picdesc.icon.hicon = hIconToSave;
IPicture* pPicture=NULL;
OleCreatePictureIndirect(&picdesc, IID_IPicture, TRUE,(VOID**)&pPicture);
LPSTREAM pStream;
CreateStreamOnHGlobal(NULL,TRUE,&pStream);
LONG size;
HRESULT hr=pPicture->SaveAsFile(pStream,TRUE,&size);
char pathbuf[1024];
strcpy(pathbuf,sIconFileName);
CFile iconfile;
iconfile.Open(pathbuf, CFile::modeCreate|CFile::modeWrite);
LARGE_INTEGER li;
li.HighPart =0;
li.LowPart =0;
ULARGE_INTEGER ulnewpos;
pStream->Seek( li,STREAM_SEEK_SET,&ulnewpos);
ULONG uReadCount = 1;
while(uReadCount>0)
{
pStream->Read(pathbuf,sizeof(pathbuf),&uReadCount);
if(uReadCount>0)
iconfile.Write(pathbuf,uReadCount);
}
pStream->Release();
iconfile.Close();
}
masterz
2003-09-08
打赏
举报
回复
用IPicture.Save
下面是保存bmp,同样的方法可以保存icon
void savebmp(CBitmap& bmp)
{
CPictureHolder picture;
picture.CreateFromBitmap((HBITMAP)bmp, NULL, TRUE);
LPPICTUREDISP pPictureDisp=picture.GetPictureDispatch();
pPictureDisp->Release(); // must be released
IStorage* pStg = 0;
hr = ::StgCreateDocfile(L"c:\\picttest",
STGM_SHARE_EXCLUSIVE |
STGM_CREATE |
STGM_READWRITE,
0, &pStg);
if(SUCCEEDED(hr))
{
IStream* pStream = 0;
hr = pStg->CreateStream(L"PICTURE",
STGM_SHARE_EXCLUSIVE |
STGM_CREATE |
STGM_READWRITE,
0, 0, &pStream);
if(SUCCEEDED(hr))
{
hr = pPictureDisp->SaveAsFile(pStream,
TRUE, // save mem copy
NULL);
pStream->Release();
}
pStg->Release();
}
pPictureDisp->Release();
}
SeekTruth
2003-09-08
打赏
举报
回复
CSDN上好像有ICO文件格式说明吧,自己取图像数据以后按格式保存试试.
zlhcc
2003-09-06
打赏
举报
回复
最好能存为icon.
下面的代码我可以很容易动态的的显示一个ico文件
HICON m_hIcon = (HICON)LoadImage( NULL, "c:\\11.ico",
IMAGE_ICON, 0, 0, LR_LOADFROMFILE );
HDC hdc = ::GetDC(m_hWnd);
::DrawIconEx(hdc, 50, 50, m_hIcon, 16, 16,
0, 0, DI_NORMAL );
::ReleaseDC(m_hWnd, hdc);
zlhcc
2003-09-06
打赏
举报
回复
哎,没有人会吗,我上codeguru上也去了,也是找不到答案
如何提取并
保存
图标
资源
本文介绍了如何使用C++编程实现提取图标
资源
并
保存
为
ICO
或BMP格式。通过加载不同类型的
文件
(如
ICO
, BMP, EXE, DLL),提取其中的图标,然后在列表框中显示,并提供
保存
图标为不同格式的功能。 126703929,15028612,Java 17&18 新特性详解,['Java', 'JVM', '开发工具', '性能优化', '安全']
Ico
n
资源
详解[2]
本文分享了在Windows平台上处理
Ico
n
资源
的技术,包括
保存
exe的图标为*.
ico
文件
、遍历PE
文件
的
ico
n
资源
、合并及分割多个*.
ico
文件
的方法。
Delphi7获取Windows
文件
图标实战项目
本文详解如何在Delphi7中调用Windows Shell API的SHGetFileInfo函数获取
文件
图标,涵盖函数参数解析、标志位使用(如SHGFI_
ICO
N、SHGFI_USEFILEATTRIBUTES)、SHFILEINFO结构体处理、图标
句柄
转换为TImage可显示图像、多尺寸图标(16x16至256x256)适配、图标缓存机制设计及内存释放规范。重点聚焦Delphi7与Windows API交互的技术实现,适用于
文件
管理器等桌面应用开发。
Qt之提取exe/dll/
ico
n
文件
图标
本文介绍了一个用于从exe、dll或
ico
n
文件
中提取图标的工具。该工具利用Extract
Ico
nEx函数实现图标提取,并通过QtWin将
H
ICO
N
转换为QPixmap进行显示和
保存
。
界面
15,976
社区成员
115,866
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章