自定义RC资源导出 FindResource LoadResource

1. 查找资源并获取资源内容

/**
* exportPath:文件路径,
*resourceId:资源ID
*/
bool ExportRes(const std::wstring& exportPath, DWORD resourceId)
{
// "DLL" 是自定义资源类型,可以自己决定
HRSRC hrSrc = FindResource(m_hInstance, MAKEINTRESOURCE(resourceId), _T("DLL"));
if (hrSrc == NULL)
{
return false;
}

HGLOBAL hGlobalResource = LoadResource(m_hInstance, hrSrc);
if (hGlobalResource == NULL)
{
return false;
}

const void* pResourceData = ::LockResource(hGlobalResource);
if (!pResourceData)
{
return false;
}

DWORD resLength = SizeofResource(m_hInstance, hrSrc);
bool ret = ExportToFile(exportPath, pResourceData, resLength);

FreeResource(hGlobalResource);
return ret;
}

bool ExportToFile(const std::wstring& exportFilePath, const void* pBuffer, DWORD bufferLength)
{
if (pBuffer == NULL || bufferLength <= 0)
{
return false;
}

HANDLE hFile = ::CreateFile(exportFilePath.c_str(),
GENERIC_WRITE,
0,
NULL,
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL);

if (hFile == NULL)
{
return false;
}

DWORD writetem = -1;
BOOL ret = ::WriteFile(hFile, pBuffer, bufferLength, &writetem, NULL);
if (writetem != bufferLength)
{
::CloseHandle(hFile);
return false;
}

::CloseHandle(hFile);
return true;
}

时间: 2024-10-14 14:13:12

自定义RC资源导出 FindResource LoadResource的相关文章

VC2010打开资源视图时提示“指南必须指定类型”,.rc资源文件损坏(转)

VC: 打开资源视图时提示“指南必须指定类型 ”(Guideline……specify type) ,.rc资源文件损坏 可能是TFS导致的 使用记事本打开.rc文件,找到“DESIGNINFO”节,会看到如下的数据:    BEGIN          , 50          , 13798327    END这就是错误原因. 解决方法:1. 参考此前的源码备份版本,并修改上面的错误数据.2. 对于无法修改的,可以直接去掉中间的数字,如下: BEGIN    END

FindResource函数错误代码:1813-找不到映像文件中指定的资源类型 与LoadResource函数错误代码:1812-指定的映像文件不包含资源区域

  HRSRC WINAPI FindResource( _In_opt_  HMODULE hModule, _In_      LPCTSTR lpName, _In_      LPCTSTR lpType ); 关于第一个参数hModule:如果为null,那么该函数就会在当前进程中寻找资源.如果在DLL情况下,该函数不可以为null,要明确待寻找资源的模块位置,要在dll项目的main里来这句: HModule handle = GetModuleHandle("本dll文件名&quo

C#开发---利用特性自定义数据通用导出到Excel

网上C#导出Excel的方法有很多.但用来用去感觉不够自动化.于是花了点时间,利用特性做了个比较通用的导出方法.只需要根据实体类,自动导出想要的数据  1.在NuGet上安装Aspose.Cells或者用微软自带类库也可以  2.需要导出的数据的实例类: using System.ComponentModel; using System.Reflection; using System.Runtime.Serialization; public class OrderReport { [Disp

关于在maven项目中配置文件资源导出问题

标准的Maven项目都会有一个resources目录来存放我们所有的资源配置文件,但是我们往往在项目中不仅仅会把所有的资源配置文件都放在resources中,同时我们也有可能放在项目中的其他位置,那么默认的maven项目构建编译时就不会把我们其他目录下的资源配置文件导出到target目录中,就会导致我们的资源配置文件读取失败,从而导致我们的项目报错出现异常,比如说尤其我们在使用MyBatis框架时,往往Mapper.xml配置文件都会放在dao包中和dao接口类放在一起的,那么执行程序的时候,其

Net 自定义Excel模板导出数据

转载自:http://www.cnblogs.com/jbps/p/3549671.html?utm_source=tuicool&utm_medium=referral 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Web.UI; 6 using System.Web.UI.WebControls; 7 using Aspos

Android 自定义Drawable 资源引用问题

问题的复现: Activity布局文件代码如下: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_par

在VC项目中使用自定义资源

这是我看到的比较实用性的技巧,分享给大家 一.前言 在VC环境中除了我们所常用的Dialog.Menu和Bitmap等标准资源类型之外,它还支持自定义资源类型(Custom Resource),我们自定义的资源类型能做些什么呢?呵呵,用处多多. 1.默认的皮肤压缩包或语言包.一些支持换肤的软件特别是一些媒体播放器常常有自定义的皮肤文件(你可以尝试将Media Player或千千静听等软件的Skins目录下的文件的扩展名改为.zip,然后使用WinZip打开看一下),但为了防止Skin文件丢失导致

Cocos2dx引擎优化(2) ---自定义资源包系统

把游戏中的资源文件(纹理,模型,材质,音乐,配置xml,json,脚本)打包有很多好处,也成为MMO开发的基本常识.对资源进行打包可以带来以下好处: . 增加游戏资源和脚本破解的难度.大多游戏制作公司都不希望自己花高昂代价制作的资料被人全盘爬过去使用,更不忍受逻辑脚本完全暴露在同行的面前. . 自定义的资源包比访问散文件资源有更快的查找和读取速度,消耗更少的系统资源,如文件句柄. . 自定义资源包可以提供更简单可用的文件存取API.加解密和压缩方案. . 一般来说,打包的资源也会比散文件形式的资

cocos2dx-3.x 导出自定义类到 lua 过程

一.简介 最近正在学习cocos2d中的lua游戏开发,因为lua开发的热更新特性,大家开发游戏好像都会优先选择lua作为开发语言. 但是遇到一个问题,用lua写一些简单的程序没什么问题,但是一旦需要一个复杂的类,在lua中直接写就感觉有些吃力.所以想到,可以把游戏开发中比较复杂的模块使用c++完成,然后导出到lua,让lua可以轻松调用. 我从头到尾完整地完成了cocos2dx-3.x中自定义类的导出过程,在网上查了好多资料,也碰到了很多错误,然而网上关于这块的文章比较零散,如果有初学者使用的