摘要:本文通过在 VC 中将外部 swf 格式文件内嵌为 VC 的内部资源,使其在程序运行过程中从资源动态
释放到临时文件,从而实现 VC 对 Flash 动画的播放。
关键词:资源;Flash 动画;Visual C++
引言
Flash 动画由于可以很方便地把用户的想象通过动画显现出来,使原本只属于专业制作人员的动画制
作变的异乎寻常的快捷、方便。由于 Flash 制作的动画在层次、内容、表现形式等诸多方面均比较出色,
因此在网络上得到迅猛的发展,更有不少厂商用 Flash 在互联网上做起了广告和产品演示,效果丝毫不比
视频的差,而体积则要小的多。Flash 不仅在网络上有广泛的应用,在普通的应用程序中也可以借助
Flash 实现一些 VC、Delphi 等编程语言所难以实现的特效,比如在一些演示版的程序中完全可以将程序
运行前的闪屏用 Flash 来制作。本文下面将通过对内嵌资源的动态释放来实现 VC 对 Flash 动画的播放,
并给出了部分实现代码。
内嵌资源的动态释放
Flash 动画在此是作为程序的一个模块,虽然也可以以文件的形式作为一个外部资源来使用,但为了
避免因外部模块遗失而造成程序的非正常运行,可将由 Flash 5.0 预先制作好的 swf 格式的文件以资源的
形式打包到应用程序中去,而在程序运行时再将其从资源恢复到文件,使用完毕再通过程序将其从磁盘删
除。
在导入资源时由于 swf 格式文件并非 VC 的标准资源,所以在导入时需要在“Resource type”栏指定资
源类型“SWF”,特别需要注意的是在此必须要包含引号。加入到资源后可以通过资源视图看到导入的
SWF 资源是以二进制形式保存的,一但加入就不能再通过资源视图对其进行编辑了。
在使用 SWF 资源前首先要将其动态从应用程序中释放到文件中才可对资源做进一步的使用。可先通
过宏 MAKEINTRESOURCE()将资源标识号 IDR_SWF 转换成字符串 Name,再分别通过
FindResource()、LoadResource()函数查找、装载该资源到内存:
CString Type="swf";
HRSRC res=FindResource (NULL,Name,Type);
HGLOBAL gl=LoadResource (NULL,res);
当资源加载到内存后,还要通过对资源内存的锁定来返回指向资源内存的地址的指针,并籍此实现
资源从内存到磁盘的保存,至于存盘的操作则由文件函数 CreateFile()、和 WriteFile()来完成:
LPVOID lp=LockResource(gl);//返回指向资源内存的地址的指针。
CString filename="Temp.swf";//保存的临时文件名
// CREATE_ALWAYS 为不管文件存不存在都产生新文件。
评论1