VC2010 MFC程序制作Flash动画欢迎界面

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/daniu2007/article/details/50618230
        写了一个基于对话框的MFC程序。为了美化程序,想在启动时弹出一个Flash动画。网上找了很久,没有直接能用的解决办法。于是,参考了
http://blog.csdn.net/zhuxiaoyang2000/article/details/6147483中介绍的在VS2010中添加Flash的方法,和http://blog.csdn.net/rydiy/article/details/8665677中介绍的MFC中欢迎界面实现方法。结合两者,实现了MFC基于对话框程序的Flash欢迎界面。以下用一个例子对整个流程进行介绍,希望对遇到同样问题的朋友有所帮助。

一、准备工作

       1.下载并安装Adobe Flash Player。从官方网站(http://get.adobe.com/cn/flashplayer/)上下载最新的Flash Player并安装。对于Windows 32位系统,其默认安装目录为:

C:/WINDOWS/system32/Macromed/Flash/;对于64位系统,为:C:/Windows/SysWOW64/Macromed/Flash。Flash控件文件的后缀为“ocx”,如我的Flash控件在目录“C:\WINDOWS\system32\Macromed\Flash”下,文件名为“Flash32_20_0_0_270.ocx”。

       2. 注册Flash控件。 单击屏幕左下角“开始”,点击“运行”,并输入:“regsvr32 C:\WINDOWS\system32\Macromed\Flash32_20_0_0_270.ocx” 注册该控件(注册之后就可以在项目中进行控件添加了),如果注册成功,则会弹出提示对话框“DllRegisterServer在C:\WINDOWS\system32\Macromed\Flash32_20_0_0_270.ocx已成功”。

       3. 准备好事先下载的或自己制作的Flash动画。

二、实现方法

       1. 打开Visual Studio(我的是2010版本),新建项目,选择“MFC应用程序”,并将其命名为“MFCFlash”。在接下来的选项设置中,选择应用程序类型为“基于对话框”,其他可按默认设置。项目建成后,程序默认添加了名为“MFCFlashD”和“MFCFlashDlg”的头文件和实现文件,如下图所示:



        2. 在资源视图中,在“Dialog”上右键,选择"插入Dialog",设置属性: “Border”为“none”,“Title Bar”为“False”,使对话框不显示标题栏和边框。改ID为“IDD_SPLASHSCREEN_DIALOG”。删除对话框上的“确定”和“关闭”按钮。如下图所示:



        3. 为了操作对话框,需将其关联一个类。在刚才插入的对话框上右键,选择添加类,设置类名“CSplashScreenDlg”,点击完成,程序会自动添加该类的头文件和源文件。将 "#include SplashScreenDlg.h”语句添加到“MFCFlashDlg.h”中,以便后续在“MFCFlashDlg.cpp”中使用“CSplashScreenDlg”类。

        4. 添加Shockwave Flash Object类。点击“项目”→“类向导”,在弹出的对话框中单击右上角的“添加类”,选择“ActiveX控件中的MFC类”,打开“从ActiveX控件添加类向导”对话框。选择从“文件”添加类,找到Flash控件的安装位置,即可添加Shockwave Flash控件,接口选择“IShockwaveFlash”,以生成CShockwaveFlash类(类的名称可以修改)。插入后,VC会自动把这个类加入工程里面。



        5. 插入ActiveX控件。在“IDD_SPLASHSCREEN_DIALOG”对话框上点击右键,选择“插入ActiveX控件”,从弹出的列表中选择“Shockwave Flash Object”。调整ActiveX控件的大小,使之完全覆盖住对话框背景。



        6. 为ActiveX控件关联变量。为了操作ActiveX控件,需将其关联为一个变量。在Flash控件上点右键,然后选择“添加变量”,设定“变量名”为:m_FlashPlayer。



        7. 为对话框添加初始化命令和定时器响应。打开类向导,选择虚函数标签页,选择OnInitDialog(),单击添加。选择消息标签页,选择“WM_TIMER”,单击添加。在“MFCFlashDlg.cpp”文件中,找到CMFCFlashDlg::OnInitDialog()函数,在“return TRUE”之前添加代码:

SetTimer(1, 3000, NULL);    //设置定时器,定时3秒钟

////获取Flash文件完整路径
CString m_sRootPath;
GetModuleFileName(NULL,m_sRootPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);
m_sRootPath.ReleaseBuffer ();
int nPos;
nPos=m_sRootPath.ReverseFind ('\\');
m_sRootPath=m_sRootPath.Left (nPos);
CString strMovieUrl = m_sRootPath + "\\start.swf" ;	//flash文件“start.swf”应放在Debug目录下

////加载并播放动画
m_FlashPlayer.LoadMovie (0, strMovieUrl);
m_FlashPlayer. Play ();

       在OnTimer()中添加代码:

switch(nIDEvent)  
{  
    case 1: //如果id为1的timer结束,则执行关闭窗口操作  
    SendMessage(WM_CLOSE);  
    break;  
    default:  
    break;  
} 

        8. 利用DoModal()函数实现“IDD_SPLASHSCREEN_DIALOG”对话框在程序启动时显示。在“MFCFlashDlg.cpp”的OnInitalDialog()中添加:

CSplashScreenDlg spldlg;
spldlg.DoModal();

        生成解决方案,运行程序,进行测试。


猜你喜欢

转载自blog.csdn.net/daniu2007/article/details/50618230