在C++ Builder中使用ActiveX控制元件顯示Flash動畫 (轉)

gugu99發表於2008-06-25
在C++ Builder中使用ActiveX控制元件顯示Flash動畫 (轉)[@more@]

 

在C++ Builder中使用顯示Flash動畫

在的大力扶持下,越來越多的公司開始支援ActiveX了,這對於喜歡的朋友來說可是件值得高興的事!因為我們可以在中很方便地外部的OCX來實現複雜的功能(比爾·蓋茨這回總算做了件好事),比如在你的程式中呼叫IE來顯示HTML檔案等。今天我想向大家介紹一下如何在C++ Builder中使用ActiveX控制元件顯示Flash動畫。
  1.、匯入ActiveX控制元件
  本文的主角是:swflash.ocx,這個檔案98中附帶有,在預設下Windows會將它安裝到“WindowsSystemMacromedFlash”目錄下,如果你在安裝時沒有選“預設安裝”可以到的安裝光碟中的win98_68.cab檔案中找到它。
  C++ Builder在對ActiveX的支援方面可說是做得非常出色,我們可以很方便地匯入中的ActiveX控制元件:選擇“Component->Import ActiveX Control”,在上面的控制元件列表中選擇“ShockWave Flash(Version 1.0)”(圖1),再點下面的“Install”按鈕就行了!如果控制元件列表中沒有它,那麼說明ShockWave
Flash控制元件還沒有在系統中註冊,不要緊,我們可以點選“Add”按鈕在你的中找到這個OCX檔案後再Install,C++ Builder會自動為它註冊。
  2.程式設計顯示Flash動畫
  匯入成功後,C++ Builder會在ActiveX頁中增加一個“ShockWaveFlash”控制元件(圖2),建立一個新工程,在合適的位置放置一個ShockWaveFlash控制元件,適當調整一下它的大小,然後在它的“Movie”屬性中填上一個你的上已有的Flash動畫檔名(如c:flashtest.swf),然後按F9執行,怎麼樣,不用寫一行程式碼我們就做出了一個能顯示Flash動畫的程式!
  不過為了讓它更好地工作,我們還有必要了解一下ShockWaveFlash控制元件的屬性和方法:

  【屬性】AlignMode(int型)和SAlign(WString型)
控制動畫的顯示位置(把這兩個屬性列在一起說明它們是相互關聯的,改變一個另一個也會相應地改變,後面類似的情況就不作說明了)。取值範圍及含義如下:
   0 空 當前位置
   1 L 當前位置靠左
   2 R 當前位置靠右
   3 LR 當前位置居中
   4 T
當前位置靠上
   5 LT 左上
   6 TR 右上
   7 LTR 上方居中
   8 B 當前位置靠下
   9 LB 左下
   10 RB 右下
   11 LRB 下方居中
   12 TB 當前位置垂直居中
   13 LTB 靠左垂直居中
   14 TRB 靠右垂直居中
   15 LTRB 中央位置
  【屬性】BackgroundColor(int型)和BGColor(WideString型) 設定背景顏色,BackgroundColor為整型值,BGColor為它的HEX字串。
  【屬性】L(bool型) 是否迴圈顯示
  【屬性】Menu(bool型) 是否顯示右鍵選單,建議設為true,因為它可以完成對Flash動畫的大部分控制工作,而不用我們寫程式碼。
  【屬性】Movie(WideString型) Flash動畫的檔名,可以在執行狀態動態設定,要關閉一個動畫只要把它設為空即可。
  【屬性】Quality(int型)和Quality2(WideString型) 控制動畫的顯示質量,一般將Quality設為1以獲得高質量的顯示效果。
  【屬性】ScaleMode(int型)和scale(WideString型) 控制動畫的顯示比例,取值範圍及含義如下:
   0 ShowAll 顯示全部
   1 NoBorder 無邊框模式
   2 ExactFit 拉伸到整個畫面
   3 空 原始大小
  【方法】PercentLoaded 返回動畫已經載入的百分比,你可以建立一個程式條(ProgressBar)來顯示動畫載入的程式。
  【方法】LoadMov用於載入上的動畫,動畫檔名為一個BSTR型的URL值,在 C++ Builder 中可以用 AnsiToOLESTR 將Char型的字串轉換成BSTR型。
  好了,利用上面介紹的屬性和方法,相信你已經很好地使用它了!遺憾的是 ShockWaveFlash 控制元件的功能現在還不太完善,比如無法返回動畫的實際大小和背景顏色等,但對於我們只要在程式中顯示一個特定的Flash動畫來說,這些並不重要。
  3.註冊ActiveX控制元件
  如果你要把你的程式給別人使用,為了防止他沒有安裝或是註冊swflash.ocx檔案而導致程式無法執行,你必須把OCX檔案也一起附帶上,並在程式中為它在系統中註冊,註冊方法有兩種:
  方法一:呼叫外部程式 Regsvr32.exe
  註冊:  Execute(Handle,NULL,“regsvr32.exe”,“swflash.ocx”,NULL,SW_SHOWNORMAL);
  反註冊: ShellExecute(Handle,NULL,“regsvr32.exe”,“/u swflash.ocx”,NULL,SW_SHOWNORMAL);
  方法二:呼叫控制元件本身所包含的註冊和反註冊函式
  每一個OCX控制元件中都提供了兩個輸出函式“DllRegisterServer”和“DllUnRegisterServer”,可以註冊和反註冊控制元件本身,我們可以用LoadLibrary()和GetProcAddress()來呼叫它們,這和動態呼叫DLL庫的方法是一樣的,我在這裡就不多說了。
  4.之談
  最後,我還想介紹一下使用ActiveX控制元件的技巧。
  一般的ActiveX控制元件都是沒有幫助檔案的,在C++ Builder的IDE環境中我們只能看到它的設計期屬性和事件,那麼怎麼才能知道它的執行期屬性和方法呢?C++ Builder在匯入一個ActiveX控制元件後會在“Imports”目錄中生成相應的標頭檔案(*.h),只要把它開啟看一下就一目瞭然了!
  另外我們還必須瞭解各種屬性、方法及其引數的含義,那就要程式設計序來試了,為每個想了解的屬性和方法建立一個選單項,點選時用InputBox輸入引數來試驗效果,還可以建立一個狀態列來顯示與其相關變數的值。
  寫了這麼多,不知你是否理解了呢?還不趕快在你的程式里加上如今最流行的Flash動畫,讓你的朋友羨慕一下!(江蘇戈夢傑)


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-1006096/,如需轉載,請註明出處,否則將追究法律責任。

相關文章