今天弄了一下VC++,尝试使用flash,不错,至少可以两个家伙进行通信。
VC的做法:
1 添加一个控件 shockwave flash
2 添加fscommand指令接收
3 添加调用flash内部函数的方法
Flash的做法:
1 添加脚本显示效果
2 添加fscommand测试
3 添加可以提供外部调用的函数
代码如下,可以提供参考:
Flash代码:
VC++代码:
大家试试啊~~
可以通信后那就啥事都可以做了。
原创内容如转载请注明:来自 阿权的书房
VC的做法:
1 添加一个控件 shockwave flash
2 添加fscommand指令接收
3 添加调用flash内部函数的方法
Flash的做法:
1 添加脚本显示效果
2 添加fscommand测试
3 添加可以提供外部调用的函数
代码如下,可以提供参考:
Flash代码:
import flash.external.*;
ExternalInterface.addCallback("CallMeFromApplication", this, InternalFunction);
function InternalFunction(str:String):String {
a_txt.text = str;
return Array("test", "testsdf");
return "The function was called successfully";
}
//
var a_str:String = "test";
a_txt.text = gggg;
fscommand("ffff", "sdfsdf");
//FlashCall("test");
a_btn.onRelease = function() {
a_txt.text = gggg;
};
ExternalInterface.addCallback("CallMeFromApplication", this, InternalFunction);
function InternalFunction(str:String):String {
a_txt.text = str;
return Array("test", "testsdf");
return "The function was called successfully";
}
//
var a_str:String = "test";
a_txt.text = gggg;
fscommand("ffff", "sdfsdf");
//FlashCall("test");
a_btn.onRelease = function() {
a_txt.text = gggg;
};
VC++代码:
void CflashDlg::FSCommandShockwaveflash2(LPCTSTR command, LPCTSTR args)
{
// TODO: 在此处添加消息处理程序代码
MessageBox(command);
flash_movie.SetVariable("gggg","test");
//((CShockwaveflash2*)GetDlgItem(IDC_SHOCKWAVEFLASH2))->SetVariable("gggg","test");
CString test;
test=flash_movie.CallFunction("<invoke name="CallMeFromApplication"><arguments><string>Some text for TFlashPlayerControl</string></arguments></invoke>");
MessageBox(test);
}
{
// TODO: 在此处添加消息处理程序代码
MessageBox(command);
flash_movie.SetVariable("gggg","test");
//((CShockwaveflash2*)GetDlgItem(IDC_SHOCKWAVEFLASH2))->SetVariable("gggg","test");
CString test;
test=flash_movie.CallFunction("<invoke name="CallMeFromApplication"><arguments><string>Some text for TFlashPlayerControl</string></arguments></invoke>");
MessageBox(test);
}
大家试试啊~~
可以通信后那就啥事都可以做了。
原创内容如转载请注明:来自 阿权的书房
收藏本文到网摘
Java和PHP[转]
今晚的面条...

我使用的开发环境是VC2005,FLASH9.OCX,控制台程序, 我的项目需要从C++中传字符串到FLASH AS3的变量中。之前用SetVariable能正常控制AS2的FLASH。由于我手头上的shockwaveflash.h中没有callfunction的函数,因此我手动添加到IShockwaveFlash : IDispatch中,代码如下:
virtual HRESULT __stdcall CallFunction(
/*[in]*/ BSTR request,
/*[out, retval]*/ BSTR* response) = 0;
类中的代码为:
std::string FlashPlayer::CallFunction(const std::string& theFunction)
{
BSTR aBStr = L"";
if (m_pFlashInterface != NULL)
{
m_pFlashInterface->CallFunction((BSTR)(theFunction.c_str()), &aBStr);
}
return (const char*) _bstr_t(aBStr);
}
调用代码:
flash->CallFunction(" <invoke name=\"myFunction\"> <arguments> <string>Hello world </string> </arguments> </invoke>");
当我调用CallFunction时,程序马上退出,没任何的报错信息。如果把CallFunction中的返回值改为:return NULL;那么程序执行到flash->CallFunction就出错。
请问如何解决?是否我的shockwaveflash.h定义不正确或其他方面问题?
非常感谢!
c的代码也是参考整理的,只是我实践过是可以的
我没有用自己的头文件,只是用的系统控件,你的问题我也不太熟悉哦,抱歉了