FSCommand("bt","bt1")这样一个消息,按下另一个按钮发送 FSCommand("bt","bt2"), 而我们的程序收到 FSCommand 消息后就对通过两个参数的 不同字符串来判断用户按下的是哪个按钮。 原理就是这样子的,要实现的话就得在 flash 动画中使用 FSCommand 发送消息,在 我们的程序接收和处理 FSCommand 消息了。flash 部分的就不讲了。那我们的程序 如何才能接收这个消息呢?前面我们讲到,shockwave flash object 插入我们的程 序后就可以象一个普通的 windows 控件那样使用它了。要让它接收并处理这个消息 当然是使用 MFC 的类向导进行消息映射了。做法如下: 1、添加消息处理函数。 在主菜单中选择“查看->类向导”,在弹出的对话框 中选择消息映射,在左边的
列表框中选择我们刚插入程序的 shockwave flash object 控件 id,右边选择 FSCommand, 点击 AddFunction,这样就添加了一个 FSCommand 消息处理函数了。它的形式大概是这样子的: void CPlayFlashDlg::OnFSCommandShockwaveflash1(LPCTSTR command, LPCTSTR args) ;函数有两个参数,就是 flash 的 Action SCript 中 FSCommand 语句中的两个 参数。其实并不一定两个参数都用到,flash 脚本中可以就使用一个参数,这样这
边的函数就只要对第一个参数进行处理就行了。 2、编写消息处理代码。 在刚添加的 FSCommand 消息处理函数中,对两个参数 进行处理。其实就是做字符串比较的操作,根据是什么字符串来判断用户进行了什 么操作。大概就是这样子的: void CPlayFlashDlg::OnFSCommandShockwaveflash1(LPCTSTR command, LPCTSTR args) { // TODO: Add your control notification handler code here if( 0
== strcmp(command,"bt") ) { if( 0 == strcmp(args,"enter") ) { MessageBox("欢迎进入系统!"); } } else if( 0 == strcmp(command,"quit") ) { MessageBox("您选择了退出!"); CDialog::OnCancel(); } } 这只是最简单的处理形式,当然你可以在 flash 中发送复杂的字符串,在这边 就要进行更多的处理了。 三、设置和读取 flash 动画中的变量。 shockwave flash object 还 提 供 了 两 个 进 行 交 互 的 函 数 , 一 个 是 CString GetVariable(LPCTSTR name), 用来获得 flash 动画中变量 name 的值, 该值以 CString 的形式返回给调用者;一个是 void SetVariable(LPCTSTR name, LPCTSTR value), 可以用来将 flash 动画中的 name 变量设置一个值 value。 使用以上介绍的几个函数就可以在我们的程序和 flash 动画间进行很好的交互了, shockwave flash object 控件还提供了其它很多函数,如果你有什么新发现的话, 不要忘了告诉我哦。