麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

在BCB中輕松使用ActiveX控件

2019-11-17 05:24:43
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  在微軟的大力扶持下,越來(lái)越多的軟件公司開(kāi)始支持ActiveX了,這對(duì)于喜歡編程的朋友來(lái)說(shuō)可是件值得興奮的事!因?yàn)槲覀兛梢栽诔绦蛑泻芊奖愕卣{(diào)用外部的OCX文件來(lái)實(shí)現(xiàn)復(fù)雜的功能,而在BCB中只帶有很少幾個(gè)ActiveX控件,大部分我們需要我們自己安裝,下面通過(guò)對(duì)RealPlayer與Flash控件的安裝與應(yīng)用,讓我們共同來(lái)學(xué)習(xí)ActiveX的組件在BCB中的使用方法:)

一、安裝、導(dǎo)入ActiveX控件
  C++ Builder在對(duì)ActiveX的支持方面可說(shuō)是做得非常出色,我們可以很方便地導(dǎo)入系統(tǒng)中的ActiveX控件:點(diǎn)擊菜單“Component→Import ActiveX Control...”打開(kāi)“Import ActiveX”對(duì)話(huà)框,在“Import ActiveX”列表框中,我們可以看到Windows中所有注冊(cè)的AxctiveX控件。在上面的控件列表中選擇你所需要的控件,再點(diǎn)下面的“Install”按鈕就行了!假如控件列表中沒(méi)有它,那么說(shuō)明你要找的控件還沒(méi)有在系統(tǒng)中注冊(cè),不要緊,我們可以點(diǎn)擊“Add”按鈕在你的計(jì)算機(jī)中找到這個(gè)OCX文件后再I(mǎi)nstall,C++ Builder會(huì)自動(dòng)為它注冊(cè)。

二、了解ActiveX控件的所有方法
  一般的ActiveX控件都是沒(méi)有幫助文件的,在C++ Builder的IDE環(huán)境中我們只能看到它的設(shè)計(jì)期屬性和事件,那么怎么才能知道它的運(yùn)行期屬性和方法呢?C++ Builder在導(dǎo)入一個(gè)ActiveX控件后會(huì)在“E:/PRogram Files/Borland/CBuilder6/Imports”目錄中生成相應(yīng)的頭文件(*.h)(當(dāng)然你的目錄可能不是這樣的),只要把它打開(kāi)看一下就一目了然了!當(dāng)然要是在BCB6下,你可以在編程的過(guò)種中雙擊代碼編輯器(Code Editor)左半邊的代碼瀏覽器(Code EXPlorer)中的ActiveX控件的名字,在右側(cè)代碼區(qū)就會(huì)查看到她的頭文件,慢慢體會(huì)吧:)
  另外我們還必須了解各種屬性、方法及其參數(shù)的含義,那就要編程序來(lái)試了,為每個(gè)想了解的屬性和方法建立一個(gè)菜單項(xiàng),點(diǎn)擊時(shí)用InputBox輸入?yún)?shù)來(lái)試驗(yàn)效果,還可以建立一個(gè)狀態(tài)欄來(lái)顯示與其相關(guān)變量的值。
     三、應(yīng)用舉例

現(xiàn)在流行的ActiveX控件很多,這里我們拿RealPlayer與flash控件做為例子。

1.RealPlayer控件的使用

如今RealPlayer的流式媒體文件以其強(qiáng)大的視頻壓縮比正逐步悄然興起。RealPlayer Plus播放器也理所當(dāng)然地成為大家播放RealPlayer格式文件的首選軟件。人家在好的也是別人的,其實(shí)我們可以利用C++ Builder打造一個(gè)完全符合自己要求的RealPlayer播放器。下面我將向大家介紹如何利用BCB來(lái)完成你的RealPlayer。前提你的機(jī)器中必須裝有RealPlayer Plus播放器,因?yàn)槲覀円玫狡渥詭ctiveX控件。
       首先,我們要在C++ Builder中導(dǎo)入所需的ActiveX控件。點(diǎn)擊菜單“Component→Import ActiveX Control...”打開(kāi)“Import ActiveX”對(duì)話(huà)框,在“Import ActiveX”列表框中,我們可以看到Windows中所有注冊(cè)的AxctiveX控件。選擇其中的“RealPlayer ActiveX Control Library(Version 1.0)”控件。然后單擊“Install”按鈕。
        回到C++ Builder主界面,你會(huì)發(fā)現(xiàn)在VCL面板中的ActiveX標(biāo)簽中增加了一個(gè)名為RealAudio的組件。我們先把它放入窗體中。不過(guò)在默認(rèn)情況中RealAudio組件沒(méi)有視頻播放窗口,也就是只能播放聲音。我我們只要在RealAudio組件的Controls屬性中添加如下代碼:
        IMAGEWINDOW,CONTROLPANEL,STATUSBAR

(其中:IMAGEWINDOW、CONTROLPANEL、STATUSBAR分別表示顯示視頻播放窗口、控制條狀態(tài)條)
       添加代碼后,我們可以發(fā)現(xiàn)控件外觀已經(jīng)改變成了視頻播放窗口外形。然后設(shè)置Align屬性為alClient,使播放窗口可以隨窗體的變化而變化,方便大家在觀看影視動(dòng)畫(huà)時(shí)可以隨意拉動(dòng)播放窗口大小。
        然后,在窗體中加入TImage組件、TopenDialog(odgRealplay)、TrealPlayer(radMyPlayer)組件各一個(gè),加入兩個(gè)Tbutton(BTnOpenClick,btnExitClick)。在Image中導(dǎo)入你喜歡的圖片,以免窗口過(guò)于單一,兩個(gè)TButton一個(gè)設(shè)為開(kāi)始,一個(gè)設(shè)為結(jié)束。括號(hào)里的名字是在我的應(yīng)用程序中給該控件命的名字。
        雙擊btnOpen添加如下代碼:
void __fastcall TForm1::btnOpenClick(TObject *Sender)
{
  if(odgRealplay->Execute())
              {

radMyPlayer->Source=odgRealplay->FileName
radMyPlayer->DoPlay();打開(kāi)并啟動(dòng)播放器

}
}
       雙擊btnExit添加如下代碼:
//---------------------------------------------------------------------------
void __fastcall TForm1::btnExitClick(TObject *Sender)
{
Close(); //終止程序運(yùn)行
}
 

為了在打開(kāi)一個(gè)文件時(shí),便于用戶(hù)選擇文件,要將odgRePlayer的Filter屬性設(shè)置如下:所有媒體文件(*.rm,*.ram,*.ra,*.swf,*.mp3)*.rm;*.ram;*.ra;*.swf;*.mp3*.**.*。
        按一下F9,找一首歌曲聽(tīng)一下:)

其它的屬性、方法呢?她的屬性真的很少,而且多數(shù)是BOOL型的,除了上面用到的,基本沒(méi)有什么讓你不用的了,方法到是很多,但是用到的并不多,到她的頭文件中,你自己看吧:P
        2.Flash控件的使用

首先我們還是要先安裝、導(dǎo)入ActiveX控件:選擇“Component->Import ActiveX Control”,在上面的控件列表中選擇“ShockWave Flash(Version 1.0)”,再點(diǎn)下面的“Install”按鈕就行了!假如控件列表中沒(méi)有它,那么說(shuō)明ShockWave Flash控件還沒(méi)有在系統(tǒng)中注冊(cè),不要緊,我們可以點(diǎn)擊“Add”按鈕在你的計(jì)算機(jī)中找到這個(gè)OCX文件后再I(mǎi)nstall,C++ Builder會(huì)自動(dòng)為它注冊(cè)。
  
  導(dǎo)入成功后,C++ Builder會(huì)在ActiveX頁(yè)中增加一個(gè)“ShockWaveFlash”控件,建立一個(gè)新工程,在合適的位置放置一個(gè)ShockWaveFlash控件,適當(dāng)調(diào)整一下它的大小,然后在它的“Movie”屬性中填上一個(gè)你的硬盤(pán)上已有的Flash動(dòng)畫(huà)文件名,然后按F9運(yùn)行,怎么樣,不用寫(xiě)一行代碼我們就做出了一個(gè)能顯示Flash動(dòng)畫(huà)的程序:)
  為了更好的應(yīng)用她,首先我們了解一下ShockWaveFlash控件的屬性和方法:

【屬性】AlignMode(int型)和SAlign(WideString型) 控制動(dòng)畫(huà)的顯示位置(把這兩個(gè)屬性列在一起說(shuō)明它們是相互關(guān)聯(lián)的,改變一個(gè)另一個(gè)也會(huì)相應(yīng)地改變,以下類(lèi)似)。取值范圍及含義如下:
   0 空        當(dāng)前位置
   1 L         當(dāng)前位置靠左
   2 R         當(dāng)前位置靠右
   3 LR       當(dāng)前位置居中
   4 T         當(dāng)前位置靠上
   5 LT       左上
   6 TR      右上
   7 LTR    上方居中
   8 B         當(dāng)前位置靠下
   9 LB       左下
   10 RB    右下
   11 LRB  下方居中
   12 TB      當(dāng)前位置垂直居中
   13 LTB    靠左垂直居中
   14 TRB 靠右垂直居中
   15 LTRB 中心位置
  【屬性】BackgroundColor(int型)和BGColor(WideString型) 設(shè)置背景顏色,BackgroundColor為整型值,BGColor為它的HEX字符串。
  【屬性】Loop(bool型) 是否循環(huán)顯示
  【屬性】Menu(bool型) 是否顯示右鍵菜單,建議設(shè)為true,因?yàn)樗梢酝瓿蓪?duì)Flash動(dòng)畫(huà)的大部分控制工作,而不用我們寫(xiě)代碼。
  【屬性】Movie(WideString型) Flash動(dòng)畫(huà)的文件名,可以在運(yùn)行狀態(tài)動(dòng)態(tài)設(shè)置,要關(guān)閉一個(gè)動(dòng)畫(huà)只要把它設(shè)為空即可。
  【屬性】Quality(int型)和Quality2(WideString型) 控制動(dòng)畫(huà)的顯示質(zhì)量,一般將Quality設(shè)為1以獲得高質(zhì)量的顯示效果。
  【屬性】ScaleMode(int型)和scale(WideString型) 控制動(dòng)畫(huà)的顯示比例,取值范圍及含義如下:
   0   ShowAll 顯示全部
   1   NoBorder 無(wú)邊框模式
   2   ExactFit 拉伸到整個(gè)畫(huà)面
   3   空 原始大小
  【方法】PercentLoaded 返回動(dòng)畫(huà)已經(jīng)加載的百分比,你可以建立一個(gè)進(jìn)程條(ProgressBar)來(lái)顯示動(dòng)畫(huà)加載的進(jìn)程。
  【方法】LoadMovie 用于加載網(wǎng)絡(luò)上的動(dòng)畫(huà),動(dòng)畫(huà)文件名為一個(gè)BSTR型的URL值,在 C++ Builder 中可以用 AnsiToOLESTR 函數(shù)將Char型的字符串轉(zhuǎn)換成BSTR型。
  假如你要把你的程序給別人使用,為了防止他沒(méi)有安裝或是注冊(cè)swflash.ocx文件而導(dǎo)致程序無(wú)法運(yùn)行,你必須把OCX文件也一起附帶上,并在程序中為它在系統(tǒng)中注冊(cè),注冊(cè)方法有兩種:
  方法一:調(diào)用外部程序 Regsvr32.exe
  注冊(cè):   ShellExecute(Handle,NULL,“regsvr32.exe”,“swflash.ocx”,NULL,SW_SHOWNORMAL);
  反注冊(cè): ShellExecute(Handle,NULL,“regsvr32.exe”,“/u swflash.ocx”,NULL,SW_SHOWNORMAL);
  方法二:調(diào)用控件本身所包含的注冊(cè)和反注冊(cè)函數(shù)
  每一個(gè)OCX控件中都提供了兩個(gè)輸出函數(shù)“DllRegisterServer”和“DllUnRegisterServer”,可以注冊(cè)和反注冊(cè)控件本身,我們可以用LoadLibrary()和GetProcAddress()來(lái)調(diào)用它們,這和動(dòng)態(tài)調(diào)用DLL庫(kù)的方法是一樣的,我在這里就不多說(shuō)了。
    你會(huì)問(wèn)我為什么會(huì)知道這些屬性的使用方法及該控件的方法的使用的,先看這個(gè)組件的頭文件,然后可以在程序中用InputBox輸入?yún)?shù)來(lái)試驗(yàn)效果,還可以建立一個(gè)狀態(tài)欄來(lái)顯示與其相關(guān)變量的值。我用的是這種方法,也許你會(huì)有更好的方法,好了,利用上面介紹的屬性和方法,相信你已經(jīng)很好地使用它了!當(dāng)然有些我也沒(méi)有弄明白,比如我想在RePlayer中實(shí)現(xiàn)重復(fù)播放,代碼如下:

void __fastcall TFrmMyPlayer::btnReOpenClick(TObject *Sender)

{

        if(odgRealplay->Execute())

        {

                int n,i;

                n=StrToInt(InputBox("播放次數(shù)","你想播放多少次呢?","2"));

                        if(n<1)

                        {

                        ShowMessage("次數(shù)必須為正整數(shù)!");

                        return;

                        }

                        radMyPlayer->Source=odgRealplay->FileName;

                        for(i=1;i<=n;i++)

                        {

                        radMyPlayer->DoPlay();

                        ShowMessage(IntToStr(i));//用來(lái)測(cè)試是否循環(huán)有問(wèn)題,測(cè)試后應(yīng)該把這個(gè)語(yǔ)句去掉

                        }

        }



無(wú)論如何也不能循環(huán),我想問(wèn)題可能出現(xiàn)在DoPlay()上了,可能她里面有一個(gè)跳出程序的語(yǔ)句(return——我覺(jué)得應(yīng)該是她),直接跳出循環(huán),因?yàn)槲乙膊磺宄﨑oPlay()的原碼是什么,或許不是這樣,是我的程序有些問(wèn)題,還請(qǐng)大家指教,互相學(xué)習(xí)嗎:)

沒(méi)辦法ActiveX控件就得靠我們自己學(xué)習(xí),有什么辦法呢?但到是讓我學(xué)習(xí)到了很多東西,其實(shí)從中也能更好的學(xué)習(xí)BCB的其它組件了,因?yàn)檫€是有一些共性的。


發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产美女爽到喷白浆的 | 久久久激情网 | 泰剧19禁啪啪无遮挡大尺度 | 黄色高清av | 性生活视频网站 | 中文字幕精品亚洲 | 一级黄色性感片 | 蜜桃视频观看麻豆 | 成人午夜精品久久久久久久3d | 男女做性免费网站 | 亚洲欧美日韩中文在线 | 日本在线播放一区二区三区 | 日韩视频1 | 男女羞羞视频在线免费观看 | 国产一区二区不卡 | 欧美成人小视频 | 国产一区二区不卡视频 | 免费黄色在线观看网站 | 主播粉嫩国产在线精品 | 免费黄色成人 | 黄色网址在线免费 | 毛片免费一区二区三区 | 久久精品久久久久 | 欧美成人精品欧美一级 | 欧美人的天堂一区二区三区 | 亚洲免费视 | 久综合| 久久国产精品成人免费网站 | 久久国产精品久久久久久 | 日本精品中文字幕 | av在线免费观看播放 | 欧美区在线 | 亚洲综合无码一区二区 | 在线免费亚洲 | 精品国产一区二区亚洲人成毛片 | 91福利国产在线观一区二区 | 91豆奶| 91香蕉国产亚洲一区二区三区 | 久久国产成人午夜av浪潮 | 轻点插视频 | 精品久久久久久久久久久久包黑料 |