技术文章 > BCB中使用ActiveX控件显示Flash(1)

BCB中使用ActiveX控件显示Flash(1)

2018-09-20 02:12

文档管理软件,文档管理系统,知识管理系统,档案管理系统的技术资料:

2001-12-22· ·戈梦杰··  
  在微软的大力扶持下,越来越多的软件公司开始支持ActiveX了,这对于喜欢编程的朋友来说可是件值得高兴的事!因为我们可以在程序中很方便地调用外部的OCX文件来实现复杂的功能(比尔·盖茨这回总算做了件好事),比如在你的程序中调用IE来显示HTML文件等。今天我想向大家介绍一下如何在C++ Builder中使用ActiveX控件显示Flash动画。

  1.安装、导入ActiveX控件

  本文的主角是:swflash.ocx,这个文件Windows98中附带有,在缺省模式下Windows会将它安装到“Windows\System\Macromed\Flash”目录下,如果你在安装时没有选“缺省安装”可以到Win98的安装光盘中的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:\flash\test.swf),然后按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型。

  好了,利用上面介绍的属性和方法,相信你已经很好地使用它了!遗憾的是 ShockWaveFlash 控件的功能现在还不太完善,比如无法返回动画的实际大小和背景颜色等,但对于我们只要在程序中显示一个特定的Flash动画来说,这些并不重要。