http://hi.baidu.com/nbcsss/blog/item/41dd2dd4fb81d8cc50da4b45.html/cmtid/fc35b10001be7eda277fb509
运用CShockwaveFlash控件进行flash与vc通信
最近对flash与vc之间的通信进行了一下简单的研究,有一下感慨在这里记录下。
首先推荐一个网址在VC中使用 Flash 美化你的程序
个人认为该文章对flash与mfc直接的通信的介绍说明的比较详细 特别是flash运用FSCommand(command,args);发送数据和mfc端运用void CPlayFlashDlg::OnFSCommandShockwaveflash1(LPCTSTR command, LPCTSTR args) ;进行消息响应的的操作过程说明的非常详细值得收藏。
在这里我想对它mfc与flash通信的过程做一个补充。
对于一个从c语言入手的程序员来说在初学CShockwaveFlash时经常对mfc与flash通信会产生疑问,不知道在flash中该怎么写代码,而通过百度或者谷歌搜索出来的结果很难令人满意,我也因为这个迷惑了很长的时间。
其实应该说用CShockwaveFlash进行vc与flash通信实在是太简单了,以至于高手们都不屑写。
CString GetVariable(LPCTSTR name)和void SetVariable(LPCTSTR name, LPCTSTR value)这两个函数是通信的关键,你要是英文比较好应该会很快知道Variable是变量的意思。知道了这些问题应该会变的很简单,flash中只需要定义一个变量比如说var y。你就可以通过GetVariable(“y”);来获取y在flash中的值,用SetVariable("y", "abc");来把flash中y的值设置成abc;(注:必须用字符串"y",否则如果用GetVariable(y)mfc会提示没有定义y是个什么东西,还有就是flash端写的时候也要小心很容易就让系统会再次定义一个新的变量,具体的可以参考flash的手册),当然你也可以用SetVariable("_root.car._x", "123"); 来设置你car实例的x坐标,很简单把,要不你也来试试。
特别说明下,MFC在调用ACTIVEX控件自动在BOOL ***App::InitInstance()调用了函数AfxEnableControlContainer();如果你用其他的工程形式如LIBUIDK就要自行在相应位置加入AfxEnableControlContainer();不然会有非法读写的错误。