糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > VS资源管理器添加自定义类型的资源文件 且读取资源文件到内存中

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

时间:2024-03-30 04:14:44

相关推荐

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

需求描述:

借助一个打包工具,指定源文件 和 目标文件路径,用生成事件的方式,每次在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资源管理器添加自定义类型的资源文件 且读取资源文件到内存中》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。