新项目中需要在mfc框架中播放swf,因此决定使用flash控件:
第一步:在本机安装flash10
Flash activex控件一般安装在用户系统目录下:C:\WINDOWS\system32\Macromed\Flash\
其中大版本号用数字表示,如9,10,11等,小版本号用小写字母表示,如a, b, c, d, e。如最新稳定版本为:Flash10e.ocx。

第二步:通过regsvr32.exe注册flash控件 Flash10e.ocx
在命令行中输入:regsvr32 C:\WINDOWS\system32\Macromed\Flash\Flash10e.ocx 注册该控件(注册之后就可以在项目中进行控件添加了)
注销控件的命令行为 regsvr32 /u C:\WINDOWS\system32\Macromed\Flash\Flash10e.ocx

第三步:注册完毕后,进入MFC项目,增加flash控件:
就是shockwave flash object控件。“建立对话框应用程序后,在主菜单里选择“工程->添加工程->components and controls”菜单选项,这时会弹出一个components and controls gallery文件选择对话框,里面有两个文件夹,一个是registered activex controls,一个是visual c++ components。选择第一文件夹后会出现一系列系统上已注册过的activex控件。在里面选择shockwave flash object,点击insert将它插入工程。因为在vc中插入工程的控件要通过一个类来操作,所以这时vc会提示你为这个控件指定一个类名,可以使用默认的类名就行了。插入后vc会自动把这个类加入工程里面。”

第四步:生成一个该控件的对象。
将shockwave flash object控件成功插入自己的工程后,在vc对话框编辑器的controls面板上就会多出图标,这个图标就是刚加入的控件的图标了。呵,这样接下来怎么用就再清楚不过了吧。和使用BUTTON、EDIT等其它windows控件一样,把它拉到对话框上,给它关联一个对象,对象的类就是我们刚才插入控件的时候所产生的类。我们可以使用这个类的成员函数来操纵这个对象,来进行flash动画的控制以及和自己的程序进行交互等操作了。这里假设关联的对象名为:m_FlashPlayer。

第五步:使用成员函数LoadMovie和Play来导入并播放动画。
m_FlashPlayer.LoadMovie(0, strMovieUrl);该函数用来将动画导入程序中,strMovieUrl为要播放的flash路径,要用绝对路径。 m_FlashPlayer.Play();调用该函数开始播放动画。在初始化对话框的函数里面加入这两个函数调用即可。
  怎么样,现在运行程序,看到flash嵌入到你的程序里面了吧。还有几个常用的函数可以用来控制动画的播放,如GotoFrame(long FrameNum)可以转到FrameNum侦播放(侦数从0开始),StopPlay()可以停止播放。。。,还有很多,可以自己试试^_^。

上面的说明,已经能在MFC中实现播放flash了,但是实现交互还是不行。
实现与flash交互,有两种方法,1:模拟鼠标点击事件,就是控制鼠标去点击flash(我同学说他睡觉时想到的,而且真的能实现,服了!) 2、是要flash提供接口,这就需要有flash的源码,然后自己修改,增加外部函数接口。以下来自百度知道,照里边做,就可以实现外部接口:
MFC可以直接设置和得到flash中的变量。调用控件的GetVariable方法和SetVariable方法现。
想让flash主动往MFC传内容并且让MFC程序响应,可以在flash中调用fscommand函数,把内容传出去。此时MFC会收到控件的FSCommand事件和内容,就可以用MFC处理了。
想让MFC主动往flash传内容并且让flash响应,用控件的CallFunction方法。
想用这种方法需要先干一些事情:
在FLASH中,要用ExternalInterface.addCallback把能被外部调用的函数注册一下,例如:
import flash.external.ExternalInterface;
ExternalInterface.addCallback("theFunctionToCall", null, theFunctionToCall);
function theFunctionToCall()
{
//...
}
在MFC中,调用CallFunction方法,传入一个比较复杂的字符串,描述了要调用的函数的名称、参数等等,以XML的形式呈现。详情参考FLASH帮助的“外部 API 的 XML 格式”一文。
详情可以参考FLASH帮助里的“使用 ExternalInterface 类”的文章。
//--------------------------------------------------------------------------------

注意,此处CallFunction传递的参数为XML格式,如下:
m_flash.CallFunction(_T("<invoke name=\"FullScreen\" returntype=\"xml\">\<arguments></arguments>\</invoke>"));
FullScreen为flash里边的外部函数接口,此处并无参数,且无返回类型

MFC如何调用Flash控件相关推荐

  1. MFC工程使用flash控件

    利用flash可以作出很漂亮的动画,想不想让自己的程序也有这样漂亮的界面呢?^_^,其实,要做到这点也不难.在这里将介绍怎样把falsh制作的界面嵌入到自己的程序中,并让flash动画和自己的程序进行 ...

  2. MFC如何调用Flash

    最近要用Flash做程序界面,所以研究了下如何在MFC下调用flash,其他开发工具也差不多的,flash会提供统一的外部API接口. //------------------------------ ...

  3. 在MFC中使用OCX控件遇到的一个问题

    [问题:] 在一个简单的MFC对话框中嵌入一个OCX控件(如浏览器控件),该控件采用动态方式创建,即调用CWnd::Create()接口生成窗口,在本机运行良好,但是在其它部分机器上运行则出现程序异常 ...

  4. Java调用ocx控件以及dll

    2019独角兽企业重金招聘Python工程师标准>>> http://lvqingboy-163-com.iteye.com/blog/769358 通过Java调用OCX控件有几种 ...

  5. MFC中动态创建控件以及事件响应实现方法

    本文实例讲述了MFC中动态创建控件以及事件响应实现方法,分享给大家供大家参考.具体实现方法如下: 动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的. 一.创建动态 ...

  6. 【工作笔记】没有界面程序调用ActiveX控件

    背景 由于chrome浏览器调用ActiveX控件有问题,所以打算使用NPAPI再封装一层,而NPAPI不支持基于MFC的DLL,所以无法用常规的方法将ActiveX控件添加到工程中去. 解决方法 在 ...

  7. [转]在Winform(C#)中使用Flash控件

    关于添加Flash控件这里就不介绍了,网上能查到一大堆 VS2005在添加Shockwave时很多人都碰到一个这个问题,就是会说ActiveX注册失败 VS2003没有这样的问题,也不知是什么原因 没 ...

  8. MFC中动态创建控件以及添加事件响应

    本文实例讲述了MFC中动态创建控件以及事件响应实现方法,分享给大家供大家参考.具体实现方法如下: 动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的. 一.创建动态 ...

  9. VC MFC列表视图(CListCtrl)控件

    VC MFC列表视图(CListCtrl)控件 列表视图控件 图标风格 CListCtrl类里要了解的函数 SetImageList为列表控件关联一个图像列表 InsertItem插入一项 GetSe ...

最新文章

  1. 分布式系统咋做同步?虐死人!
  2. java 关闭按钮监听_Java事件处理(1)——实现简单的事件监听功能
  3. 网站改版都要注重哪些因素?
  4. win7访问windows server 2003服务器出现未知的用户名或者错误的密码(转载)
  5. 2022.2.17自制辣白菜
  6. UpdateProgress 控件--用户中断
  7. 基于SuperMap Objects写的GoogleMap地图切割程序(二)
  8. 【SpringCloud】Spring cloud 版本与 spring boot版本对应关系
  9. android去除标题栏和状态栏(全屏)
  10. linux 动态内存分配,具体来说,fork()如何处理Linux中malloc()动态分配的内存?
  11. 4个步骤教你建立中后台后台通用权限管理系统
  12. java求根号值_Java-求根号n(示例代码)
  13. adjacent_difference 的使用
  14. android 自定义indicator,Android自定义Indicator
  15. 几则小故事(网上收集)
  16. linux 下oracle11g卸载干净,linux系统Oracle11g R2完整卸载教程
  17. 等额本息贷款每月还款金额推导过程
  18. 洛谷P1606 Lilypad Pond G
  19. 计算机基础知识教程excel单元格拆分,EXCEL表格怎样把一个单元格里的不同内容分开...
  20. 向面前的第一座山进军!!!

热门文章

  1. Sharding-JDBC(二)- Sharding-JDBC介绍
  2. 重学JavaWeb(11)JDBC
  3. android将彩图转为黑白_彩图转黑白的12种方法
  4. 计算机毕设之超市积分管理系统
  5. Win7 英文专业版安装中文包汉化后部分软件中文乱码问题处理
  6. Java编程那些事儿11——JDK的获得、安装和配置
  7. Rabbitmq客户端接收消息为字符数组解决
  8. 【软件】DVDStyler报错找不到VOB文件
  9. c语言realpath
  10. 软考有哪些实质性的用处?