赛迪网 > IT技术 C/C++ > 文章
  IT资讯搜索
 
IT产品搜索
[程序开发][网管世界][网络安全][数据库技术]
[操作系统][嘉宾聊天·在线访谈][活动集锦]
[精彩专题][Symantec专区][订阅IT技术周刊]
[开发论坛][网管论坛][安全论坛][数据库论坛]
[操作系统论坛][Sybase专区][IBM dW技术专区]
[病毒求助][病毒与漏洞播报][文档·源码下载]

C++ Builder用ActiveX显示Flash动画

发布时间:2006.04.06 04:32     来源:cncsk技术文档中心    作者:戈梦杰

在微软的大力扶持下,越来越多的软件公司开始支持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动画,让你的朋友羡慕一下!

(T113)


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· 应用实例:VC++实现广告窗口自动关闭 (03-13) · 10日:Flash、Reader功能植入手机应用 (03-10)
· 将Flash游戏融入随身听的游戏天地 (03-06) · VC++中的Progress控件如何使用 (02-21)
· 在C++程序中导出Word文档的方法 (02-17) · C++中控制Windows关机的实用技巧 (02-17)
· C++中控制Windows关机的实用技巧 (02-15) · C++编程语言中的四个调试技巧 (02-14)
· C++常用字符串处理函数及使用示例 (02-09) · 用C++程序删除文本文件中以“//”开头的行 (02-08)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
[政务][电信][金融][农业][制造业][中小企业]
[CIO][ERP][协同][IT管理][中间件][电子商务]
[政策][地方][专家][评估][辞典][博客][社区]
· 专题:一路畅通构想曲——让出行不再遭遇堵车
· CIO工作亲历:企业ERP选型不能忽视"选人关"
· 综述:信息化建设给中国监狱带来的各种变化
· 金融业风险管理和法规遵从有五点需考虑的因素
· 保险业CIO关注:该如何建立统一高效的CRM体系
· 调查显示:多数CIO对IT规划仍存在困惑和误解
  博客·论坛 ·曾剑秋·项立刚·Java学习·网管