作者在 2010-06-14 14:46:47 发布以下内容
MFC显示Flash动画的编程实现(此文转自hlmzrdongdon)
Flash动画已经广泛应用于网页中了,其美观与趣味性得到了我们的认可。网页是通过浏览器例如IE,The World等软件呈现给我们的,这些浏览器软件内置能够播放Flash的软件,那么如何在MFC程序中显示Flash,使我们设计的对话框程序更加美观呢?本文就是讨论这个问题的。首先声明本文所用的MFC开发软件是VS2008版的,所以下面供下载的例程是在VS2008环境下编写的。使用VC++6.0的朋友可以用记事本打开那些源代码。
例程下载地址:http://hlmzrdongdongsohu.qupan.com/4796664.html
当然在开始时有一个准备工作要做,那就是下载一个较小的.swf格式的Flash动画吧。另外要确保你的计算机里安装了播放Flash动画的ActiveX插件,也许你不知道你的计算机里有没有这个插件,后面在编程的过程中将会告诉你的。
一.建立一个基于对话框的工程
我将自己的工程命名为flashdemo。在建立工程的向导中有一部很重要,如下图所示:
这里红色区域的那一项一定要钩上,因为后面的编程中将会用到ActiveX控件的。默认情况下也是钩上的。
二.将播放Flash动画的ActiveX控件加入到工程中
通过资源窗口(Resource)进入编辑对话框的界面,在该对话框上单击右键选择“插入ActiveX控件…”选项。如下图所示:
接着会弹出一对话框,那是要你选择ActiveX控件,找到播放Flash动画的控件“Shockwave Flash Object”,选中后点击确定即可。观察一下对话框会看到一个黑色的矩形框,那个即是这个控件。如果你找不到这一项即说明没有注册该控件。当然可以人工注册百度一下即可。
三.调整Flash播放控件的属性
选中该Flash控件后将其ID设置为IDC_SHOCKWAVEFLASH。
再次选中该控件,右击给此控件添加一个成员变量,命名为flashshow。
四.添加代码
需要添加的代码非常的少,都是在flashdemoDlg.cpp这个文件中田间。
在对话框初始化函数体BOOL CflashdemoDlg::OnInitDialog()中添加一下代码:
程序代码:
RECT rc;
this->GetClientRect(&rc);//获得客户区的坐标
//调整flash的位置
rc.left=rc.right/2-200;
rc.right=rc.right/2+200;
rc.top+=40;
rc.bottom=rc.bottom/2;
flashshow.MoveWindow( &rc, true );
TCHAR strCurDrt[500];
int nLen = ::GetCurrentDirectory(500,strCurDrt);
if( strCurDrt[nLen]!='\\' )
{
strCurDrt[nLen++] = '\\';
strCurDrt[nLen] = '\0';
}
CString strFileName = strCurDrt;
strFileName += "clock.swf";//clock.swf是flash文件的名字,该flash文件放在工程目录下。
flashshow.LoadMovie(0, strFileName);
flashshow.Play();
this->GetClientRect(&rc);//获得客户区的坐标
//调整flash的位置
rc.left=rc.right/2-200;
rc.right=rc.right/2+200;
rc.top+=40;
rc.bottom=rc.bottom/2;
flashshow.MoveWindow( &rc, true );
TCHAR strCurDrt[500];
int nLen = ::GetCurrentDirectory(500,strCurDrt);
if( strCurDrt[nLen]!='\\' )
{
strCurDrt[nLen++] = '\\';
strCurDrt[nLen] = '\0';
}
CString strFileName = strCurDrt;
strFileName += "clock.swf";//clock.swf是flash文件的名字,该flash文件放在工程目录下。
flashshow.LoadMovie(0, strFileName);
flashshow.Play();
然后在void CflashdemoDlg::DoDataExchange(CDataExchange* pDX)中添加如下代码:
程序代码:
DDX_Control(pDX, IDC_SHOCKWAVEFLASH, flashshow);
至于这些代码的确切位置在哪,看看提供的例程即可。
五.运行该程序
编译之后运行效果图如下
我下载的一个Flash动画是一个clock,所以上面显示的是一个时钟,当然显示的时间是系统时间,不需要你控制和更改的,是由这个flash本身完成的。