VS资源管理器添加自定义类型的资源文件,且读取资源文件到内存中

原创 2018年04月17日 11:39:15
需求描述:

    借助一个打包工具,指定源文件 和 目标文件路径,用生成事件的方式,每次在VS编译之前执行,生成资源文件包resourse.g2xp(包含了项目中的所有.png图片和xml等资源文件)。

    将资源文件包resourse.g2xp加载到项目中,读取文件数据到内存,方便程序在运行中加载包中的图片等资源。


具体方法:

一、预生成事件

项目 —> 配置属性 —>生成事件 —> 预生成事件—>命令行 :

start $(ProjectDir)\G2XPackage.exe -p $(ProjectDir)\res_pack $(ProjectDir)\res.g2xp

意思是执行 宏定义ProjectDir 目录下的G2XPackage.exe程序,将 宏定义ProjectDir目录下的res_pack文件夹,打包成宏定义 ProjectDir 目录下的resourse.g2xp。

前提是G2XPackage.exe程序要存在,res_pack也要存在。

这样,每次编译之前就会执行预生成事件,生成一个resourse.g2xp文件


二、导入自定义资源文件

资源视图 —>添加资源 —>自定义  


输入自己想定义的类型,例如 RESPACK ,点击确认,就会在资源视图上生成响应的类型。

然后选中该类型 —>右键添加资源 —>导入,从弹出的文本选择对话框中选择要加入的文件resourse.g2xp,确定,就会看到在RESPACK目录下多了一个资源文件

PS:我在点了确定之后,RESPACK目录下并没有出现相应的资源文件,后来查看属性,才知道在导入时系统写入的路径出现了错误,修改正确的路径后,资源文件就出现了。


三、获取资源文件内容

BOOL CUDOApp::InitLoadResPackage()
{
	// 读取资源包文件
	HRSRC hRsrc = FindResource(NULL, MAKEINTRESOURCE(IDR_RESPACK), "RESPACK");
	if (NULL == hRsrc)
		return FALSE;
	//获取资源的大小
	DWORD dwSize = SizeofResource(NULL, hRsrc); 
	if (0 == dwSize)
		return FALSE;

	//加载资源
	HGLOBAL hGlobal = LoadResource(NULL, hRsrc); 
	if (NULL == hGlobal)
		return FALSE;
	//锁定资源
	LPVOID pBuffer = LockResource(hGlobal); 

	if (NULL == pBuffer)
		return FALSE;

// 这里转换为BYTE*,根据自己业务需要,也可转换为其它类型
	BYTE* pByte = new BYTE[dwSize + 1];
	memcpy(pByte, pBuffer, dwSize);

	GlobalUnlock(hGlobal);
// 读取资源到此结束,后面为业务内容

	BOOL bRet = G2XSetBundle(pByte, dwSize, _T("res"));

	delete[] pByte;
	pByte = NULL;

	return TRUE;
}



在vs&qt中使用资源文件

在vs环境下用qt进行开发时,常常需要用到各种资源,如图表、样式表等。在这种情况下,使用资源文件是最恰当的选择,使用资源文件可以将资源编译到.exe文件中,即使脱离编译器独立运行也可以达到应有的效果;...
  • u011747846
  • u011747846
  • 2014-12-20 15:31:15
  • 2245

VS中加载自定义资源

最近在做一个项目,需要把多个文件的内容合并到一个文件中。如果使用读文件的方法,所有的文件都要保存在同一目录下,使用的时候需要复制很多文件,不是很方便。于是想把这些文件当作资源加载到程序中,使用的时候直...
  • yuyelingting
  • yuyelingting
  • 2015-02-06 15:58:47
  • 1518

VS2010 VC++创建.rc资源文件

VS2010 VC++创建.rc资源文件初学MFC,对资源文件总是很困惑。一上来就直接自动生成了那么多的东西,尤其是.rc和resource.h文件。这两天了解了一下这个东西,在这里分享一下,欢迎交...
  • NNNNNNNNNNNNY
  • NNNNNNNNNNNNY
  • 2015-06-07 01:09:52
  • 9781

从VC工程的rc资源中将资源文件取出来或读出来

1、将PNG图片读出到CImage对象中         相关
  • chenlycly
  • chenlycly
  • 2014-06-17 09:43:52
  • 10083

VS2008 C#用资源文件做背景音乐

参考文章:http://blog.csdn.net/stormwy/article/details/7901944 注:我测试的程序的命名空间为:WuBiCodeExecSys C#用...
  • friendan
  • friendan
  • 2012-11-21 19:50:20
  • 5648

VS2010+QT 添加资源文件(.qrc)

1、项目右键菜单 - 添加 - 新键项 2、在弹出的“添加新项”对话框左侧的“类别”列表中选择 “Qt Resources” 3、在右侧的模板列表中选择 “Qt Resource” 4、输入资源...
  • m0_37644085
  • m0_37644085
  • 2017-11-23 15:08:56
  • 444

DLL和EXE加载包在自身内部的资源文件

1、插入资源的方法       insert-->resource-->import,在出现的对话框中选择一个要作为资源的文件,接着在出现的对话框中Resource type:下面的框中随便自己输入...
  • mengyafei43
  • mengyafei43
  • 2013-08-26 14:33:07
  • 3760

VS资源文件和外部依赖项

本文解决的问题: 1、VS资源文件是什么 2、VS外部依赖项是什么 3、VS2012d的MSDN帮助文档的下载外部依赖项:里面显示的文件是你程序中显示包含的头文件所包含的的头文件。比如,你的ma...
  • jenny_84
  • jenny_84
  • 2015-03-26 14:44:27
  • 5385

MFC将任意文件放入资源中调用

将一个版本的程序包含到另一个版本(母体)里面,母体在运行的时候,判断是不是自己需要的版本,如果是,那么就运行,如果不是,那么释放出包含的那个版本的程序,然后运行释放出来的程序。 这样就没有必要将两个程...
  • evgd2288
  • evgd2288
  • 2009-12-04 10:02:00
  • 3990

Qt002 - Qt4.8.5+VS2008在Qt项目中添加资源文件(.qrc)

开发环境 Qt4.8.5(VS2008静态编译)+
  • weaver2007
  • weaver2007
  • 2014-05-08 10:04:42
  • 1215
收藏助手
不良信息举报
您举报文章:VS资源管理器添加自定义类型的资源文件,且读取资源文件到内存中
举报原因:
原因补充:

(最多只允许输入30个字)