想按照如下自定义文件的方式,来从资源中导出资源并写入自定义的格式文件中
FindResource
LoadResource
LockResource
WriteFile但是发现ico格式文件根本行不通
FindResource用的第三个参数为RT_GROUP_ICON 或RT_ICON
有的ico资源不会出错,有的ico资源就会返回1813或1814错误没有出错的情况下,最后写成ico文件,也是错误的。 比如一个4kB的ico
最后写成后只有几十字节,图标是系统默认的文件图标我只想从资源中导出ico资源并正确写入ico文件
请问有什么方法吗?
谢谢
附原帖http://topic.csdn.net/u/20100721/15/29de8d97-34a2-4d57-8101-db726d39f0b7.html
FindResource
LoadResource
LockResource
WriteFile但是发现ico格式文件根本行不通
FindResource用的第三个参数为RT_GROUP_ICON 或RT_ICON
有的ico资源不会出错,有的ico资源就会返回1813或1814错误没有出错的情况下,最后写成ico文件,也是错误的。 比如一个4kB的ico
最后写成后只有几十字节,图标是系统默认的文件图标我只想从资源中导出ico资源并正确写入ico文件
请问有什么方法吗?
谢谢
附原帖http://topic.csdn.net/u/20100721/15/29de8d97-34a2-4d57-8101-db726d39f0b7.html
void SaveThePicture(IUnknown* pUnk)
{
IPicture* pPicture = 0;
HRESULT hr = pUnk-> QueryInterface(&pPicture);
if(SUCCEEDED(hr))
{
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 = pPicture-> SaveAsFile(pStream,
TRUE, // save mem copy
NULL);
pStream-> Release();
}
pStg-> Release();
}
pPicture-> Release();
}
}
这个术语叫什么我也忘了能否具体点呢?
用了SaveIcon这个函数
但是导出来的ico整个都乱掉了,不是原先的那个了,
这个也不知道什么原因
貌似没看到从hicon写文件的
UINT ExtractIconEx(
LPCTSTR lpszFile,
int nIconIndex,
HICON *phiconLarge,
HICON *phiconSmall,
UINT nIcons
);函数不是可以吗
但是16*16最后变成了32*32的了
但是有很多的ico都不行
差不多就是7楼的连接,稍微改了下
然后自己再改下,终于搞定了,
有时间再详细的研究下,ico文件的结构了
而其他的像dll,ini等就不用了呢这个是怎么回事,谁能给个答案的?
谢谢了