http://hi.baidu.com/nbcsss/blog/item/41dd2dd4fb81d8cc50da4b45.html/cmtid/fc35b10001be7eda277fb509
最近對(duì)flash與vc之間的通信進(jìn)行了一下簡(jiǎn)單的研究,有一下感慨在這里記錄下。
首先推薦一個(gè)網(wǎng)址在VC中使用 Flash 美化你的程序
個(gè)人認(rèn)為該文章對(duì)flash與mfc直接的通信的介紹說明的比較詳細(xì) 特別是flash運(yùn)用FSCommand(command,args);發(fā)送數(shù)據(jù)和mfc端運(yùn)用void CPlayFlashDlg::OnFSCommandShockwaveflash1(LPCTSTR command, LPCTSTR args) ;進(jìn)行消息響應(yīng)的的操作過程說明的非常詳細(xì)值得收藏。
在這里我想對(duì)它mfc與flash通信的過程做一個(gè)補(bǔ)充。
對(duì)于一個(gè)從c語(yǔ)言入手的程序員來說在初學(xué)CShockwaveFlash時(shí)經(jīng)常對(duì)mfc與flash通信會(huì)產(chǎn)生疑問,不知道在flash中該怎么寫代碼,而通過百度或者谷歌搜索出來的結(jié)果很難令人滿意,我也因?yàn)檫@個(gè)迷惑了很長(zhǎng)的時(shí)間。
其實(shí)應(yīng)該說用CShockwaveFlash進(jìn)行vc與flash通信實(shí)在是太簡(jiǎn)單了,以至于高手們都不屑寫。
CString GetVariable(LPCTSTR name)和void SetVariable(LPCTSTR name, LPCTSTR value)這兩個(gè)函數(shù)是通信的關(guān)鍵,你要是英文比較好應(yīng)該會(huì)很快知道Variable是變量的意思。知道了這些問題應(yīng)該會(huì)變的很簡(jiǎn)單,flash中只需要定義一個(gè)變量比如說var y。你就可以通過GetVariable(“y”);來獲取y在flash中的值,用SetVariable("y", "abc");來把flash中y的值設(shè)置成abc;(注:必須用字符串"y",否則如果用GetVariable(y)mfc會(huì)提示沒有定義y是個(gè)什么東西,還有就是flash端寫的時(shí)候也要小心很容易就讓系統(tǒng)會(huì)再次定義一個(gè)新的變量,具體的可以參考flash的手冊(cè)),當(dāng)然你也可以用SetVariable("_root.car._x", "123"); 來設(shè)置你car實(shí)例的x坐標(biāo),很簡(jiǎn)單把,要不你也來試試。
特別說明下,MFC在調(diào)用ACTIVEX控件自動(dòng)在BOOL ***App::InitInstance()調(diào)用了函數(shù)AfxEnableControlContainer();如果你用其他的工程形式如LIBUIDK就要自行在相應(yīng)位置加入AfxEnableControlContainer();不然會(huì)有非法讀寫的錯(cuò)誤。