码迷,mamicode.com
首页 > 其他好文 > 详细

vc rc资源提取

时间:2020-06-24 14:32:42      阅读:60      评论:0      收藏:0      [点我收藏+]

标签:lob   nullptr   写入   style   null   编译   void   数据   stream   

int LoadStream(WORD wResID, char **pData)
{
    HRSRC   hResInfo = FindResource(NULL, MAKEINTRESOURCE(wResID), TEXT("RES"));
    HGLOBAL hResData = LoadResource(NULL, hResInfo);
    LPVOID    lpResData = LockResource(hResData);
    DWORD dwSize = SizeofResource(NULL, hResInfo);

    if (lpResData == nullptr || dwSize == 0)
    {
        return 0;
    }

    *pData = (char *)malloc(dwSize);
    if (!pData)
    {
        return 0;
    }

    memcpy(*pData, lpResData, dwSize);
    FreeResource(hResData);

    return dwSize;
}

 

以上是通过资源id提取字符串流。我想了一下如何通过资源名提取资源数据,例如rc问卷添加了:IDR_RES1             RES                     "res\\fonts\Hei.ttf" 添加了指定资源,后面想通过"res\\fonts\Hei.ttf"获得资源数据。

我发现windows编译exe没有将源文件名写入安装包中,只写入一个resID。最后的解决方案:通过zip压缩所有资源文件,在rc文件中导入改zip压缩包,使用上面LoadSteam接口获取zip数据后,通过解压接口来获得资源路径和资源数据。

 

转载请注明出处,from 博客园HemJohn

 

vc rc资源提取

标签:lob   nullptr   写入   style   null   编译   void   数据   stream   

原文地址:https://www.cnblogs.com/HemJohn/p/13186921.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!