在CB中使用ActiveX控件顯示Flash動畫
2019-09-06 23:33:55
供稿:網(wǎng)友
在微軟的大力扶持下,越來越多的軟件公司開始支持ActiveX了,這對于喜歡編程的朋友來說可是件值得高興的事!因為我們可以在程序中很方便地調(diào)用外部的OCX文件來實現(xiàn)復(fù)雜的功能(比爾?蓋茨這回總算做了件好事),比如在你的程序中調(diào)用IE來顯示HTML文件等。今天我想向大家介紹一下如何在C++ Builder中使用ActiveX控件顯示Flash動畫。
1.安裝、導(dǎo)入ActiveX控件
本文的主角是:swflash.ocx,這個文件Windows98中附帶有,在缺省模式下Windows會將它安裝到“WindowsSystemMacromedFlash”目錄下,如果你在安裝時沒有選“缺省安裝”可以到Win98的安裝光盤中的win98_68.cab文件中找到它。
C++ Builder在對ActiveX的支持方面可說是做得非常出色,我們可以很方便地導(dǎo)入系統(tǒng)中的ActiveX控件:選擇“Component->Import ActiveX Control”,在上面的控件列表中選擇“ShockWave Flash(Version 1.0)”(圖1),再點下面的“Install”按鈕就行了!如果控件列表中沒有它,那么說明ShockWave Flash控件還沒有在系統(tǒng)中注冊,不要緊,我們可以點擊“Add”按鈕在你的計算機中找到這個OCX文件后再Install,C++ Builder會自動為它注冊。
2.編程顯示Flash動畫
導(dǎo)入成功后,C++ Builder會在ActiveX頁中增加一個“ShockWaveFlash”控件(圖2),建立一個新工程,在合適的位置放置一個ShockWaveFlash控件,適當調(diào)整一下它的大小,然后在它的“Movie”屬性中填上一個你的硬盤上已有的Flash動畫文件名(如c:flashest.swf),然后按F9運行,怎么樣,不用寫一行代碼我們就做出了一個能顯示Flash動畫的程序!
不過為了讓它更好地工作,我們還有必要了解一下ShockWaveFlash控件的屬性和方法:
【屬性】AlignMode(int型)和SAlign(WideString型) 控制動畫的顯示位置(把這兩個屬性列在一起說明它們是相互關(guān)聯(lián)的,改變一個另一個也會相應(yīng)地改變,后面類似的情況就不作說明了)。取值范圍及含義如下:
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型) 設(shè)置背景顏色,BackgroundColor為整型值,BGColor為它的HEX字符串。
【屬性】Loop(bool型) 是否循環(huán)顯示
【屬性】Menu(bool型) 是否顯示右鍵菜單,建議設(shè)為true,因為它可以完成對Flash動畫的大部分控制工作,而不用我們寫代碼。
【屬性】Movie(WideString型) Flash動畫的文件名,可以在運行狀態(tài)動態(tài)設(shè)置,要關(guān)閉一個動畫只要把它設(shè)為空即可。
【屬性】Quality(int型)和Quality2(WideString型) 控制動畫的顯示質(zhì)量,一般將Quality設(shè)為1以獲得高質(zhì)量的顯示效果。
【屬性】ScaleMode(int型)和scale(WideString型) 控制動畫的顯示比例,取值范圍及含義如下:
0 ShowAll 顯示全部
1 NoBorder 無邊框模式
2 ExactFit 拉伸到整個畫面
3 空 原始大小
【方法】PercentLoaded 返回動畫已經(jīng)加載的百分比,你可以建立一個進程條(ProgressBar)來顯示動畫加載的進程。
【方法】LoadMovie 用于加載網(wǎng)絡(luò)上的動畫,動畫文件名為一個BSTR型的URL值,在 C++ Builder 中可以用 AnsiToOLESTR 函數(shù)將Char型的字符串轉(zhuǎn)換成BSTR型。
好了,利用上面介紹的屬性和方法,相信你已經(jīng)很好地使用它了!遺憾的是 ShockWaveFlash 控件的功能現(xiàn)在還不太完善,比如無法返回動畫的實際大小和背景顏色等,但對于我們只要在程序中顯示一個特定的Flash動畫來說,這些并不重要。
3.注冊ActiveX控件
如果你要把你的程序給別人使用,為了防止他沒有安裝或是注冊swflash.ocx文件而導(dǎo)致程序無法運行,你必須把OCX文件也一起附帶上,并在程序中為它在系統(tǒng)中注冊,注冊方法有兩種:
方法一:調(diào)用外部程序 Regsvr32.exe
注冊: ShellExecute(Handle,NULL,“regsvr32.exe”,“swflash.ocx”,NULL,SW_SHOWNORMAL);
反注冊: ShellExecute(Handle,NULL,“regsvr32.exe”,“/u swflash.ocx”,NULL,SW_SHOWNORMAL);
方法二:調(diào)用控件本身所包含的注冊和反注冊函數(shù)
每一個OCX控件中都提供了兩個輸出函數(shù)“DllRegisterServer”和“DllUnRegisterServer”,可以注冊和反注冊控件本身,我們可以用LoadLibrary()和GetProcAddress()來調(diào)用它們,這和動態(tài)調(diào)用DLL庫的方法是一樣的,我在這里就不多說了。
4.經(jīng)驗之談
最后,我還想介紹一下使用ActiveX控件的技巧。
一般的ActiveX控件都是沒有幫助文件的,在C++ Builder的IDE環(huán)境中我們只能看到它的設(shè)計期屬性和事件,那么怎么才能知道它的運行期屬性和方法呢?C++ Builder在導(dǎo)入一個ActiveX控件后會在“Imports”目錄中生成相應(yīng)的頭文件(*.h),只要把它打開看一下就一目了然了!
另外我們還必須了解各種屬性、方法及其參數(shù)的含義,那就要編程序來試了,為每個想了解的屬性和方法建立一個菜單項,點擊時用InputBox輸入?yún)?shù)來試驗效果,還可以建立一個狀態(tài)欄來顯示與其相關(guān)變量的值。
寫了這么多,不知你是否理解了呢?還不趕快在你的程序里加上如今最流行的Flash動畫,讓你的朋友羨慕一下!