程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> vc教程 >> 在VC中使用 Flash 美化你的程序

在VC中使用 Flash 美化你的程序

編輯:vc教程

  我們分為兩步來走:

  一、將flash動畫嵌入自己的程序中,這一點比較簡單,使用shockwave flash object控件就可以實現。這個控件在安裝flash的時候就裝到你的系統上了,flash5.0以下的文件名是swflash.ocx,5.0以上版本的名字是flash.ocx,在系統目錄裡面應該可以找得到;

  二、在flash動畫和自己的程序中傳遞消息進行交互。這一點也是要通過控件來實現,不過得在flash動畫和自己的程序中做些處理。

  下面我們來具體說明操作過程:

  一、將flash動畫嵌入自己的程序中。所有在windows平台上的支持ocx控件的軟件開發工具都可以做到這一點。我使用的是vc++6.0,就以這個的做法來介紹。

  1、檢查你的系統上是否有shockwave flash object控件並已注冊。如果你的系統上裝有flash,則就有這個控件,否則的話,可以到網上下載一個過來安裝。

  2、新建一個MFC對話框應用程序,假設命名為PlayFlash。

  3、添加shockwave flash object控件。建立對話框應用程序後,在主菜單裡選擇“工程->添加工程->components and controls”菜單選項,這時會彈出一個components and controls gallery文件選擇對話框,裡面有兩個文件夾,一個是registered activex controls,一個是visual c++ components。選擇第一文件夾後會出現一系列系統上已注冊過的activex控件。在裡面選擇shockwave flash object(如果你系統上沒這個控件,這裡面就找不到了,可以去download個下來安裝),點擊insert將它插入工程。因為在vc中插入工程的控件要通過一個類來操作,所以這時vc會提示你為這個控件指定一個類名,可以使用默認的類名就行了。插入後vc會自動把這個類加入工程裡面。

  4、生成一個該控件的對象。將shockwave flash object控件成功插入自己的工程後,在vc對話框編輯器的controls面板上就會多出圖標,這個圖標就是剛加入的控件的圖標了。呵,這樣接下來怎麼用就再清楚不過了吧。和使用BUTTON、EDIT等其它windows控件一樣,把它拉到對話框上,給它關聯一個對象,對象的類就是我們剛才插入控件的時候所產生的類。我們可以使用這個類的成員函數來操縱這個對象,來進行flash動畫的控制以及和自己的程序進行交互等操作了。這裡假設關聯的對象名為:m_FlashPlayer。

  5、使用成員函數LoadMovie和Play來導入並播放動畫。

m_FlashPlayer.LoadMovie(0, strMovieUrl);該函數用來將動畫導入程序中,strMovieUrl為要播放的flash路徑,要用絕對路徑。 m_FlashPlayer.Play();調用該函數開始播放動畫。在初始化對話框的函數裡面加入這兩個函數調用即可。

  怎麼樣,現在運行程序,看到flash嵌入到你的程序裡面了吧。還有幾個常用的函數可以用來控制動畫的播放,如GotoFrame(long FrameNum)可以轉到FrameNum偵播放(偵數從0開始),StopPlay()可以停止播放。。。,還有很多,可以自己試試'。下面我們要介紹如果進行交互性的控制了。 

  二、在flash動畫和自己的程序中傳遞消息進行交互。

  把flash嵌入自己的程序後,用戶在flash動畫上面操作,想知道用戶進行了什麼操作,就得讓flash動畫來告訴我們了。做過flash的人應該知道flash的動作腳本語言:Action Script。裡面有個命令叫FSCommand(command,args);我們就是要通過這個命令向外部發送消息的。這個命令有兩個參數,都是字符串,你可以在flash腳本中指定任意的字符串。比如用戶按下flash動畫的一個按鈕就發送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。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved