天津市南开区委组织部:求助:怎样解决flash.ocx这个控件的加载问题?【求助】

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/29 21:59:29
求助:请帮忙解决flash.ocx这个ActiveX控件的加载问题!

为什么打开有的网页会经常出现加载flash.ocx控件问题,导致IE错误退出,我知道虽然可以把这个控件设为禁用,但这样的话网页的动画都会打不开,影响网页效果,请问有什么办法解决这个问题?多谢各位大侠帮忙!!

在C++ Builder中使用ActiveX控件显示Flash动画

在微软的大力扶持下,越来越多的软件公司开始支持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动画来说,这些并
不重要。
3.注册ActiveX控件
如果你要把你的程序给别人使用,为了防止他没有安装或是注册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库的方法是一
样的,我在这里就不多说了。
4.经验之谈
最后,我还想介绍一下使用ActiveX控件的技巧。
一般的ActiveX控件都是没有帮助文件的,在C++ Builder的IDE环境中我
们只能看到它的设计期属性和事件,那么怎么才能知道它的运行期属性和方法呢
?C++ Builder在导入一个ActiveX控件后会在“Imports”目录中生成相应的
头文件(*.h),只要把它打开看一下就一目了然了!
另外我们还必须了解各种属性、方法及其参数的含义,那就要编程序来试了
,为每个想了解的属性和方法建立一个菜单项,点击时用InputBox输入参数来试
验效果,还可以建立一个状态栏来显示与其相关变量的值。
写了这么多,不知你是否理解了呢?还不赶快在你的程序里加上如今最流行
的Flash动画,让你的朋友羡慕一下!