动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > C/C++教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ C/C++教程 ]的信息

本月文章推荐
.乌托邦式的接口和实现分离技术.
.C语言入门之函数(1).
.HANOI塔问题的递归解.
.C++箴言:接口继承和实现继承.
.C++内存管理详解.
.罗云彬VxD教程--虚拟机管理器.
.C++ Builder 链接DLL.
.C++ STL编程轻松入门.
.C++启蒙之用C++制作程序.
.几个图形(03).
.求从棋盘的坐下角到右上角的无环.
.回复编程爱好者请教的有关题二叉.
.水滴石穿C语言之指针综合谈.
.《TVS2.0应用实录》004:Togethe.
.C++ Builder 给窗体传.
.GCC 安装.
.C程序开发经典实例之3.
.在Listboxes中加背景图.
.C++ Builder 从窗体获.
.理解内联函数inline在C++中的用法.

Visual C++实现Flash动画播放

发表日期:2008-3-8 |



  摘要: 本文通过在VC中将外部swf格式文件内嵌为VC的内部资源,使其在程序运行过程中从资源动态释放到临时文件,从而实现VC对Flash动画的播放。
   引言   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为不管文件存不存在都产生新文件。
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中,在此后只对此临时文件操作,与程序内嵌资源无关。    Flash动画的播放   swf格式的Flash动画通常主要应用在网页上,也就是说IE浏览器本身可以支持Flash动画的播放。这样就不必再单独编写用于播放swf文件的代码,从而大大减少编程的工作量。在VC ++ 6.0中新增了一个从CView派生的、用于处理网页的视类CHtmlView,由于该类是以Internet EXPlorer为后台支持,因此在创建工程时只需在最后一步指定视类从CHtmlView派生就可以使程序不编一行代码而具备IE浏览器的网页显示能力。   程序刚生成的时候缺省的连接主页是为微软公司的主页,需要对此修改,使程序在执行时立即显示刚才提取出来的Flash临时文件Temp.swf。显示缺省主页的代码是在视类的初始化函数中进行的: void CEmbedModuleView::OnInitialUpdate()
{
CHtmlView::OnInitialUpdate();
Navigate2(_T("http://www.microsoft.com"),NULL,NULL);
}

  显然要将Navigate2()函数的第一个参数改成Temp.swf的存放路径。刚才在释放资源到文件时并没有指定绝对路径,因此释放出来的资源文件应当和应用程序处于同一目录。但是在此处假如不写明绝对路径是无法显示该临时文件的。获取该临时文件的绝对路径可用如下方法实现:先获取应用程序本身的绝对路径,然后去处应用程序全名(程序名和扩展名)此时得到的是应用程序和临时文件所处文件夹的路径,最后只需在此基础上加上临时文件的文件名Temp.swf即可得到临时文件的全路径。下面是实现的主要代码:
//获取应用程序的全路径
char exeFullPath[MAX_PATH];
GetModuleFileName(NULL,exeFullPath,MAX_PATH);
//将其格式化为字符串
m_TempFile.Format("%s",exeFullPath);
//去掉应用程序的全名(15为应用程序文件全名的长度)
exeFullPath[m_TempFile.GetLength()-15]='\0';
//得到应用程序所在路径
m_TempFile.Format("%s",exeFullPath);
//得到临时文件的全路径
m_TempFile+="Temp.swf";
  最后将得到的临时文件的全路径m_TempFile作为参数传递给Navigate2()即可在程序运行时把Flash动画作为主页而显示(如下图所示)。

Visual C++实现Flash动画播放
  由于临时文件Temp.swf是在程序运行过程中从应用程序的资源中提取出来的,因此在程序退出之前需要将其删除。一般是在消息WM_DESTORY的响应函数里通过DeleteFile()函数来加以实现的。    小结   本文通过对CHtmlView和内嵌资源的动态释放实现了Flash动画在VC程序中的播放,并对资源的动态释放作了较为清楚的描述。通过类似的方法,可以将动态链接库、HTML文件等程序模块作为资源嵌入其中,在使用时再动态释放到临时文件,这样可有效避免文件模块过多时的杂乱以及程序模块丢失导致程序非正常运行等情况的发生。本文所述程序在Windows 98下,由Microsoft Visual C++ 6.0编译通过。Flash动画由 Macromedia Flash 5.0制作,所需浏览器支持为Internet Explorer 6.0。
上一篇:I/O端口读写的实现 人气:410
下一篇:TList的用法 人气:479
浏览全部C/C++的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-10-13 爬爬思特新闻管理系统 v2.0 Beta1
2008-10-13 Pligg v9.9.5 Beta
2008-10-13 广优邮件发送系统 v2.1
2008-10-13 缤纷互动视频交友 v3.1 RC
2008-10-13 MyShop网络商城 build 081005
2008-10-13 Chyrp 超轻量级开源博客引擎 v2.
2008-10-13 162100静态(论坛/文章)系统 v2.4
2008-10-13 金博人才招聘求职网黄金版 v4.2
2008-10-13 愚人笔记 v4.0
2008-10-11 联系人分组工具 v1.1 中文破解版
2008-10-11 FaceMelter变脸 v2.0 汉化破解版
2008-10-11 PathTracker道路跟踪仪 v1.2 破解
2008-10-11 Rooms手机聊天室 v0.6.7 破解版
2008-10-11 RemoteDesktop远程桌面 v1.0 破解
2008-10-11 ProRemote远程调音台 v1.0.1 破解
2008-10-11 PicShare照片共享 v1.0.0 破解版
2008-10-11 Photogene照片编辑器 v1.5 汉化破
2008-10-11 WriteRoom共享文档 v1.0 破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | js/vbs加密 | md5加密 | 进制转换 | UTF-8 转换工具 | Html转换js | Html转换asp | Html转换php | Html转换perl
实用工具:汉字翻译拼音 | 拼音字典 | 符号对照表 | 个税计算 | 实时汇率查询换算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 | 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵
SEO対策 中国語教室 ホームページ作成