VC 程序内嵌资源

资源导入:

直接在ResourceView页使用import...就可以。
//-----------------------------------------------------------------------------------
资源使用:

/*在导入资源时由于swf格式文件并非VC的标准资源,所以在导入时需要在“Resource type”栏指定资源类型“SWF”,特别需要注意的是在此必须要包含引号。加入到资源后可以通过资源视图看到导入的SWF资源是以二进制形式保存的,一但加入就不能再通过资源视 图对其进行编辑了。

   在使用SWF资源前首先要将其动态从应用程序中释放到文件中才可对资源做进一步的使用。可先通过宏MAKEINTRESOURCE()将资源标识号IDR_SWF转换成字符串Name,再分别通过FindResource()、LoadResource()函数查找、装载该资源到内存:
*/
LPTSTR Name = MAKEINTRESOURCE(IDR_SWF);// IDR_SWF资源名称。

HRSRC res = FindResource(NULL, Name, "swf");// "swf" 资源类型。
HGLOBAL gl = LoadResource(NULL,res);

/*当资源加载到内存后,还要通过对资源内存的锁定来返回指向资源内存的地址的指针,并籍此实现资源从内存到磁盘的保存,至于 存盘的操作则由文件函数CreateFile()、和WriteFile()来完成:*/

LPVOID lp=LockResource(gl);//返回指向资源内存的地址的指针。

CString filename="Temp.swf";//保存的临时文件名

// CREATE_ALWAYS为不管文件存不存在都产生新文件。***CreateFile() 默认使用当前.exe文件路径创建文件。
HANDLE fp = CreateFile(filename, GENERIC_WRITE, 0, NULL,
CREATE_ALWAYS,0,NULL);

DWORD a;
//sizeofResource 得到资源文件的大小
if (!WriteFile(fp, lp, SizeofResource(NULL,res), &a, NULL))
return false;

CloseHandle(fp);//关闭句柄
FreeResource(gl);//释放内存
/*通过上述代码,可将SWF资源从应用程序中提取并释放到临时文件Temp.swf中,
在此后只对此临时文件操作,与程序内嵌资源无关。*/

// 得到当前路径 并 加上文件名称。
TCHAR strCurDrt[500];
int nLen = ::GetCurrentDirectory(500,strCurDrt);
if( strCurDrt[nLen]!='//' )
{
strCurDrt[nLen++] = '//';
strCurDrt[nLen] = '/0';
}

strFileName = strCurDrt;
strFileName += "Temp.swf";

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值