在VC中使用 Flash 美化你的程序 ![]() 代碼運行效果圖 利用flash可以作出很漂亮的動(dòng)畫(huà),想不想讓自己的程序也有這樣漂亮的界面呢? ^_^,其實(shí),要做到這點(diǎn)也不難。在這里將介紹怎樣把falsh制作的界面嵌入到自己的程序中,并讓flash動(dòng)畫(huà)和自己的程序進(jìn)行交互。 我們分為兩步來(lái)走: 一、將flash動(dòng)畫(huà)嵌入自己的程序中,這一點(diǎn)比較簡(jiǎn)單,使用shockwave flash object控件就可以實(shí)現。這個(gè)控件在安裝flash的時(shí)候就裝到你的系統上了,flash5.0以下的文件名是swflash.ocx,5.0以上版本的名字是flash.ocx,在系統目錄里面應該可以找得到; 二、在flash動(dòng)畫(huà)和自己的程序中傳遞消息進(jìn)行交互。這一點(diǎn)也是要通過(guò)控件來(lái)實(shí)現,不過(guò)得在flash動(dòng)畫(huà)和自己的程序中做些處理。 下面我們來(lái)具體說(shuō)明操作過(guò)程: 一、將flash動(dòng)畫(huà)嵌入自己的程序中。所有在windows平臺上的支持ocx控件的軟件開(kāi)發(fā)工具都可以做到這一點(diǎn)。我使用的是vc++6.0,就以這個(gè)的做法來(lái)介紹。 1、檢查你的系統上是否有shockwave flash object控件并已注冊。如果你的系統上裝有flash,則就有這個(gè)控件,否則的話(huà),可以到網(wǎng)上下載一個(gè)過(guò)來(lái)安裝。 2、新建一個(gè)MFC對話(huà)框應用程序,假設命名為PlayFlash。 3、添加shockwave flash object控件。建立對話(huà)框應用程序后,在主菜單里選擇“工程->添加工程->components and controls”菜單選項,這時(shí)會(huì )彈出一個(gè)components and controls gallery文件選擇對話(huà)框,里面有兩個(gè)文件夾,一個(gè)是registered activex controls,一個(gè)是visual c++ components。選擇第一文件夾后會(huì )出現一系列系統上已注冊過(guò)的activex控件。在里面選擇shockwave flash object(如果你系統上沒(méi)這個(gè)控件,這里面就找不到了,可以去download個(gè)下來(lái)安裝),點(diǎn)擊insert將它插入工程。因為在vc中插入工程的控件要通過(guò)一個(gè)類(lèi)來(lái)操作,所以這時(shí)vc會(huì )提示你為這個(gè)控件指定一個(gè)類(lèi)名,可以使用默認的類(lèi)名就行了。插入后vc會(huì )自動(dòng)把這個(gè)類(lèi)加入工程里面。 4、生成一個(gè)該控件的對象。將shockwave flash object控件成功插入自己的工程后,在vc對話(huà)框編輯器的controls面板上就會(huì )多出圖標,這個(gè)圖標就是剛加入的控件的圖標了。呵,這樣接下來(lái)怎么用就再清楚不過(guò)了吧。和使用BUTTON、EDIT等其它windows控件一樣,把它拉到對話(huà)框上,給它關(guān)聯(lián)一個(gè)對象,對象的類(lèi)就是我們剛才插入控件的時(shí)候所產(chǎn)生的類(lèi)。我們可以使用這個(gè)類(lèi)的成員函數來(lái)操縱這個(gè)對象,來(lái)進(jìn)行flash動(dòng)畫(huà)的控制以及和自己的程序進(jìn)行交互等操作了。這里假設關(guān)聯(lián)的對象名為:m_FlashPlayer。 5、使用成員函數LoadMovie和Play來(lái)導入并播放動(dòng)畫(huà)。 m_FlashPlayer.LoadMovie(0, strMovieUrl);該函數用來(lái)將動(dòng)畫(huà)導入程序中,strMovieUrl為要播放的flash路徑,要用絕對路徑。 m_FlashPlayer.Play();調用該函數開(kāi)始播放動(dòng)畫(huà)。在初始化對話(huà)框的函數里面加入這兩個(gè)函數調用即可。 怎么樣,現在運行程序,看到flash嵌入到你的程序里面了吧。還有幾個(gè)常用的函數可以用來(lái)控制動(dòng)畫(huà)的播放,如GotoFrame(long FrameNum)可以轉到FrameNum偵播放(偵數從0開(kāi)始),StopPlay()可以停止播放。。。,還有很多,可以自己試試^_^。下面我們要介紹如果進(jìn)行交互性的控制了。 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("歡迎進(jìn)入系統!"); } } else if( 0 == strcmp(command,"quit") ) { MessageBox("您選擇了退出!"); CDialog::OnCancel(); }} 這只是最簡(jiǎn)單的處理形式,當然你可以在flash中發(fā)送復雜的字符串,在這邊就要進(jìn)行更多的處理了。 三、設置和讀取flash動(dòng)畫(huà)中的變量。 shockwave flash object還提供了兩個(gè)進(jìn)行交互的函數,一個(gè)是CString GetVariable(LPCTSTR name),用來(lái)獲得flash動(dòng)畫(huà)中變量name的值,該值以CString的形式返回給調用者;一個(gè)是void SetVariable(LPCTSTR name, LPCTSTR value),可以用來(lái)將flash動(dòng)畫(huà)中的name變量設置一個(gè)值value。 使用以上介紹的幾個(gè)函數就可以在我們的程序和flash動(dòng)畫(huà)間進(jìn)行很好的交互了,shockwave flash object控件還提供了其它很多函數,如果你有什么新發(fā)現的話(huà),不要忘了告訴我哦。 |
聯(lián)系客服