现在的位置: 首页 > 综合 > 正文

在BCB中轻松使用ActiveX控件

2013年06月25日 ⁄ 综合 ⁄ 共 3843字 ⁄ 字号 评论关闭

BCB中轻松使用ActiveX控件

          (版权要求:本文除了经过CSDN授权或作者同意,不得转载)

在微软的大力扶持下,越来越多的软件公司开始支持ActiveX了,这对于喜欢编程的朋友来说可是件值得高兴的事!因为我们可以在程序中很方便地调用外部的OCX文件来实现复杂的功能,而在BCB中只带有很少几个ActiveX控件,大部分我们需要我们自己安装,下面通过对RealPlayerFlash控件的安装与应用,让我们共同来学习ActiveX的组件在BCB中的使用方法:)

一、安装、导入ActiveX控件
  C++ Builder在对ActiveX的支持方面可说是做得非常出色,我们可以很方便地导入系统中的ActiveX控件:点击菜单“ComponentImport ActiveX Control...”打开“Import ActiveX”对话框,在“Import ActiveX”列表框中,我们可以看到Windows中所有注册的AxctiveX控件。在上面的控件列表中选择你所需要的控件,再点下面的“Install”按钮就行了!如果控件列表中没有它,那么说明你要找的控件还没有在系统中注册,不要紧,我们可以点击“Add”按钮在你的计算机中找到这个OCX文件后再InstallC++ Builder会自动为它注册。

二、了解ActiveX控件的所有方法
  一般的ActiveX控件都是没有帮助文件的,在C++ BuilderIDE环境中我们只能看到它的设计期属性和事件,那么怎么才能知道它的运行期属性和方法呢?C++ Builder在导入一个ActiveX控件后会在“E:/Program Files/Borland/CBuilder6/Imports”目录中生成相应的头文件(.h)(当然你的目录可能不是这样的),只要把它打开看一下就一目了然了!当然要是在BCB6下,你可以在编程的过种中双击代码编辑器(Code Editor)左半边的代码浏览器(Code Explorer)中的ActiveX控件的名字,在右侧代码区就会查看到她的头文件,慢慢体会吧:)
  另外我们还必须了解各种属性、方法及其参数的含义,那就要编程序来试了,为每个想了解的属性和方法建立一个菜单项,点击时用InputBox输入参数来试验效果,还可以建立一个状态栏来显示与其相关变量的值。
     三、应用举例

现在流行的ActiveX控件很多,这里我们拿RealPlayerflash控件做为例子。

1RealPlayer控件的使用

如今RealPlayer的流式媒体文件以其强大的视频压缩比正逐步悄然兴起。RealPlayer Plus播放器也理所当然地成为大家播放RealPlayer格式文件的首选软件。人家在好的也是别人的,其实我们可以利用C++ Builder打造一个完全符合自己要求的RealPlayer播放器。下面我将向大家介绍如何利用BCB来完成你的RealPlayer。前提你的机器中必须装有RealPlayer Plus播放器,因为我们要用到其自带ActiveX控件。
      
首先,我们要在C++ Builder中导入所需的ActiveX控件。点击菜单“ComponentImport 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

(其中:IMAGEWINDOWCONTROLPANELSTATUSBAR分别表示显示视频播放窗口、控制条状态条)
      
添加代码后,我们可以发现控件外观已经改变成了视频播放窗口形状。然后设置Align属性为alClient,使播放窗口可以随窗体的变化而变化,方便大家在观看影视动画时可以随意拉动播放窗口大小。
       
然后,在窗体中加入TImage组件、TopenDialogodgRealplay)、TrealPlayerradMyPlayer)组件各一个,加入两个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();
 //终止程序运行
}
 

为了在打开一个文件时,便于用户选择文件,要将odgRePlayerFilter属性设置如下:所有媒体文件(*.rm,*.ram,*.ra,*.swf,*.mp3)|*.rm;*.ram;*.ra;*.swf;*.mp3|*.*|*.*
       
按一下F9,找一首歌曲听一下:)

其它的属性、方法呢?她的属性真的很少,而且多数是BOOL型的,除了上面用到的,基本没有什么让你不用的了,方法到是很多,但是用到的并不多,到她的头文件中,你自己看吧:P
        2.Flash
控件的使用

首先我们还是要先安装、导入ActiveX控件:选择“Component>Import ActiveX Control”,在上面的控件列表中选择“ShockWave Flash(Version 1.0)”,再点下面的“Install”按钮就行了!如果控件列表中没有它,那么说明ShockWave Flash控件还没有在系统中注册,不要紧,我们可以点击“Add”按钮在你的计算机中找到这个OCX文件后再InstallC++ 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

抱歉!评论已关闭.