(zt)Flash与C++交互

原:http://space.flash8.net/space/?592228/viewspace-421363.html

#### c++ to flash calls:

TRY
{
CString ret = m_FlashPlayer.CallFunction("<invoke name=\"FlashFunction\" returntype=\"xml\"><arguments><string> empty ?</string></arguments></invoke>");
//AfxMessageBox(ret);
}
CATCH(COleDispatchException, ex)
{
TCHAR   szCause[255];
CString strFormatted;
ex->GetErrorMessage(szCause, 255);
strFormatted = "The program exited because of this error: ";
strFormatted += szCause;
AfxMessageBox(strFormatted);
}
END_CATCH


in Actionscrīpt now :

import flash.external.*;
ExternalInterface.addCallback("FlashFunction", this, InternalFlashFunction);
function InternalFlashFunction(str: String): String
{
play();
return "You can return a string...";
}


#### flash to c++ calls:

BEGIN_EVENTSINK_MAP(CFlashPlayerDlg, CDialog)
//{{AFX_EVENTSINK_MAP(CFlashPlayerDlg)
ON_EVENT(CFlashPlayerDlg, IDC_SHOCKWAVEFLASH1, 150 /* FSCommand */, OnFSCommand, VTS_BSTR VTS_BSTR)
ON_EVENT(CFlashPlayerDlg, IDC_SHOCKWAVEFLASH1, 197 /* FlashCall */, OnFlashCall, VTS_BSTR)
//}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()
void CFlashPlayerDlg::OnFSCommand(LPCTSTR command, LPCTSTR args)
{
AfxMessageBox(command);
}
void CFlashPlayerDlg::OnFlashCall(LPCTSTR request)
{
AfxMessageBox(request);
}


in Actionscrīpt :

fscommand("ChangeText", textInput_txt.text); // for fscommand
// or
flash.external.ExternalInterface.call("GetContacts"); // flash call
原文地址:https://www.cnblogs.com/gamesacer/p/1322116.html