在BCB中轻松利用ActiveX控件
副标题#e#
在微软的大力大举扶持下,越来越多的软件公司开始支持ActiveX了,这对付喜欢编程的伴侣来说但是件值得兴奋的事!因为我们可以在措施中很利便地挪用外部的OCX文件来实现巨大的成果,而在BCB中只带有很少几个ActiveX控件,大部门我们需要我们本身安装,下面通过对RealPlayer与Flash控件的安装与应用,让我们配合来进修ActiveX的组件在BCB中的利用要领:)
一、安装、导入ActiveX控件
C++ Builder在对ActiveX的支持方面可说是做得很是精彩,我们可以很利便地导入系统中的ActiveX控件:点击菜单“Component→Import ActiveX Control…”打开“Import ActiveX”对话框,在“Import ActiveX”列表框中,我们可以看到Windows中所有注册的AxctiveX控件。在上面的控件列表中选择你所需要的控件,再点下面的“Install”按钮就行了!假如控件列表中没有它,那么说明你要找的控件还没有在系统中注册,没干系,我们可以点击“Add”按钮在你的计较机中找到这个OCX文件后再Install,C++ Builder会自动为它注册。
二、相识ActiveX控件的所有要领
一般的ActiveX控件都是没有辅佐文件的,在C++ Builder的IDE情况中我们只能看到它的设计期属性和事件,那么怎么才气知道它的运行期属性和要领呢?C++ Builder在导入一个ActiveX控件后会在“E:\Program Files\Borland\CBuilder6\Imports”目次中生成相应的头文件(*.h)(虽然你的目次大概不是这样的),只要把它打开看一下就一目了然了!虽然要是在BCB6下,你可以在编程的过种中双击代码编辑器(Code Editor)左半边的代码欣赏器(Code Explorer)中的ActiveX控件的名字,在右侧代码区就会查察到她的头文件,逐步体会吧:)
别的我们还必需相识各类属性、要领及其参数的寄义,那就要编措施来试了,为每个想相识的属性和要领成立一个菜单项,点击时用InputBox输入参数来试验结果,还可以成立一个状态栏来显示与其相关变量的值。
三、应用举例
此刻风行的ActiveX控件许多,这里我们拿RealPlayer与flash控件做为例子。
1.RealPlayer控件的利用
如今RealPlayer的流式媒体文件以其强大的视频压缩比正慢慢悄然鼓起。RealPlayer Plus播放器也理所虽然地成为各人播放RealPlayer名目文件的首选软件。人家在好的也是别人的,其实我们可以操作C++ Builder打造一个完全切合本身要求的RealPlayer播放器。下面我将向各人先容如何操作BCB来完成你的RealPlayer。前提你的呆板中必需装有RealPlayer Plus播放器,因为我们要用到其自带ActiveX控件。
首先,我们要在C++ Builder中导入所需的ActiveX控件。点击菜单“Component→Import ActiveX Control…”打开“Import ActiveX”对话框,在“Import ActiveX”列表框中,我们可以看到Windows中所有注册的AxctiveX控件。选择个中的“RealPlayer ActiveX Control Library(Version 1.0)”控件。然后单击“Install”按钮。
回到C++ Builder主界面,你会发此刻VCL面板中的ActiveX标签中增加了一个名为RealAudio的组件。我们先把它放入窗体中。不外在默认环境中RealAudio组件没有视频播放窗口,也就是只能播放声音。我我们只要在RealAudio组件的Controls属性中添加如下代码:
IMAGEWINDOW,CONTROLPANEL,STATUSBAR
(个中:IMAGEWINDOW、CONTROLPANEL、STATUSBAR别离暗示显示视频播放窗口、节制条状态条)
添加代码后,我们可以发明控件外观已经改酿成了视频播放窗口形状。然后配置Align属性为alClient,使播放窗口可以随窗体的变革而变革,利便各人在寓目影视动画时可以随意拉动播放窗口巨细。
然后,在窗体中插手TImage组件、TopenDialog(odgRealplay)、TrealPlayer(radMyPlayer)组件各一个,插手两个Tbutton(btnOpenClick,btnExitClick)。在Image中导入你喜欢的图片,以免窗口过于单一,两个TButton一个设为开始,一个设为竣事。括号里的名字是在我的应用措施中给该控件命的名字。
双击btnOpen添加如下代码:
void __fastcall TForm1::btnOpenClick(TObject *Sender)
{
if(odgRealplay->Execute())
{
radMyPlayer->Source=odgRealplay->FileName
radMyPlayer->DoPlay();打开并启动播放器
}
}
双击btnExit添加如下代码:
//---------------------------------------------------------------------------
void __fastcall TForm1::btnExitClick(TObject *Sender)
{
Close(); //终止措施运行
}
为了在打开一个文件时,便于用户选择文件,要将odgRePlayer的Filter属性配置如下:所有媒体文件(*.rm,*.ram,*.ra,*.swf,*.mp3)|*.rm;*.ram;*.ra;*.swf;*.mp3|*.*|*.*。
按一下F9,找一首歌曲听一下:)
#p#分页标题#e#
其它的属性、要领呢?她的属性真的很少,并且大都是BOOL型的,除了上面用到的,根基没有什么让你不消的了,要领到是许多,可是用到的并不多,到她的头文件中,你本身看吧:P
#p#副标题#e#
2.Flash控件的利用
首先我们照旧要先安装、导入ActiveX控件:选择“Component->Import ActiveX Control”,在上面的控件列表中选择“ShockWave Flash(Version 1.0)”,再点下面的“Install”按钮就行了!假如控件列表中没有它,那么说明ShockWave Flash控件还没有在系统中注册,没干系,我们可以点击“Add”按钮在你的计较机中找到这个OCX文件后再Install,C++ Builder会自动为它注册。
导入乐成后,C++ Builder会在ActiveX页中增加一个“ShockWaveFlash”控件,成立一个新工程,在符合的位置安排一个ShockWaveFlash控件,适当调解一下它的巨细,然后在它的“Movie”属性中填上一个你的硬盘上已有的Flash动画文件名,然后按F9运行,怎么样,不消写一行代码我们就做出了一个能显示Flash动画的措施:)
为了更好的应用她,首先我们相识一下ShockWaveFlash控件的属性和要领:
【属性】AlignMode(int型)和SAlign(WideString型) 节制动画的显示位置(把这两个属性列在一起说明它们是彼此关联的,改变一个另一个也会相应地改变,以下雷同)。取值范畴及寄义如下:
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字符串。
【属性】Loop(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)来显示动画加载的历程。
【要领】LoadMovie 用于加载网络上的动画,动画文件名为一个BSTR型的URL值,在 C++ Builder 中可以用 AnsiToOLESTR 函数将Char型的字符串转换成BSTR型。
假如你要把你的措施给别人利用,为了防备他没有安装或是注册swflash.ocx文件而导致措施无法运行,你必需把OCX文件也一起附带上,并在措施中为它在系统中注册,注册要领有两种:
要领一:挪用外部措施 Regsvr32.exe
注册: ShellExecute(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库的要领是一样的,我在这里就不多说了。
你会问我为什么会知道这些属性的利用要领及该控件的要领的利用的,先看这个组件的头文件,然后可以在措施顶用InputBox输入参数来试验结果,还可以成立一个状态栏来显示与其相关变量的值。我用的是这种要领,也许你会有更好的要领,好了,操作上面先容的属性和要领,相信你已经很好地利用它了!虽然有些我也没有弄大白,好比我想在RePlayer中实现反复播放,代码如下:
void __fastcall TFrmMyPlayer::btnReOpenClick(TObject *Sender)
{
if(odgRealplay->Execute())
{
int n,i;
n=StrToInt(InputBox("播放次数","你想播放几多次呢?","2"));
if(n<1)
{
ShowMessage("次数必需为正整数!");
return;
}
radMyPlayer->Source=odgRealplay->FileName;
for(i=1;i<=n;i++)
{
radMyPlayer->DoPlay();
ShowMessage(IntToStr(i));//用来测试是否轮回有问题,测试后应该把这个语句去掉
}
}
#p#分页标题#e#
无论如何也不能轮回,我想问题大概呈此刻DoPlay()上了,大概她内里有一个跳出措施的语句(return——我以为应该是她),直接跳出轮回,因为我也不清楚DoPlay()的原码是什么,或者不是这样,是我的措施有些问题,还请各人指教,相互进修吗:)
没步伐ActiveX控件就得靠我们本身进修,有什么步伐呢?但到是让我进修到了许多对象,其实从中也能更好的进修BCB的其它组件了,因为照旧有一些共性的。
无论如何我以为ActiveX控件给我们的编程带来许多的利便,不防你也凭据上面的要领做一个属于你本身的Media Player9,感觉一下快乐带给你的一切:P
——————
作者:ch_builder
QQ:116001522