网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > VC++ > 正文
VC中利用FLASH制作图声并茂的动画程序
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/15
下载{$ArticleTitle}原创论文样式

作者:齐云

前言:
        FLASH是一种功能强大的矢量动画,可以制作出各种华丽的电影效果,应用非常广泛!这也给予我们一个启迪:如果在VC程序中能够播放FLASH动画,将为程序增色不少,而且许多原本不易实现的功能,现在都可以轻松实现! 像金山词霸的安装程序主控界面就利用了FLASH,效果相当好。本文中笔者将制作一个完整的多媒体软件,将一些关键性技术介绍给大家,并提供全部代码供大家参考。

本文使用到的关键性技术:
(1)利用vb制作MS AGENT播放模块。
(2)将该播放模块、FLASH动画文件SWF与其它必要资源打包到程序中,并在运行时自动释放。
(3)通过VC和VB的通信实现多个不同模块的顺序执行。
(4)FLASH的播放,并实现避免右键菜单的弹出。

下面介绍具体的实现:
(1)利用vb制作MS AGENT播放模块。
这里先插入MS AGENT模块。然后在Form_Load里进行Agent控件的初始化;
Private Sub Form_Load()
     Agent1.Characters.Load ("dot")
     下面就可进行动画操作了.
     Agent1.Characters.Character("dot").Show
     我们可用如下语句执行一些动作
     Agent1.Characters.Character("dot").Play "Congratulate"
     Agent1.Characters.Character("dot").Speak "你好!"
     Agent1.Characters.Character("dot").moveto  x,y ‘x,y 位屏幕坐标。


由于我们用的是dot.acs,我们不能假定别人的机子上有这个文件。所以我将这个文件复制到winnt(windows)\msagent\chars目录下, 用于复制的VC代码如下:
char *a = new char [255];
char *b = new char [255];
GetCurrentDirectory(255,a);
CString *str = new CString(a);
CString *sou = new CString;
////////////////////////////////////////
(*sou)=*str+CString("\\DOT.ACS");
GetWindowsDirectory (b,255);
CString  *des =new CString(b) ;
(*des)+=CString ("\\msagent\\chars");
CreateDirectory (des->GetBuffer (10),NULL);
*des+=CString ("\\DOT.ACS");
//AfxMessageBox (*des);
//AfxMessageBox (*sou);
CopyFile (sou->GetBuffer (10),des->GetBuffer (10),false);
//这个是为了避免在Load中用全路径。

(2)实现了文件打包,将过多的模块整合到一起,避免文件的繁杂
首先我们将各个模块作为资源加入资源中。定义整数标识和类型。这些资源文件打包将在程序运行的时候解出。 以下是从资源释放到文件的函数:
int res2file(LPCTSTR lpName,LPCTSTR lpType,LPCTSTR filename)
{
//输入:lpName 为资源名,可用MAKEINTRESOURCE()宏将整型变为字符串。
//LpType  为串类型名
//Filename  为释放出的文件名。
//输出:成功1,失败0
HRSRC myres = FindResource (NULL,lpName,lpType);
HGLOBAL gl = LoadResource (NULL,myres);
LPVOID lp = LockResource(gl);//返回指向资源内存的地址的指针。
// CREATE_ALWAYS为不管文件存不存在都产生新文件。
HANDLE fp = CreateFile(filename ,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,0,NULL);

if (!fp)
return false;
DWORD a;
//sizeofResource 得到资源文件的大小
if(!WriteFile (fp,lp,SizeofResource(NULL,myres),&a,NULL))
return false;
CloseHandle(fp);
FreeResource(gl);
return true;
  • 下一篇资讯: 改变对话框的背景色
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号