首页 > 网站 > 媒体动画 > 正文

Authorware基础教程:authorware7地ActiveX控件(1)

2024-09-08 19:26:41
字体:
来源:转载
供稿:网友

5.3.1  如何注册activex控件

一、activex控件概述

activex是一个microsoft的术语,它指的是一组包括控件、dll、active文档的组件,通常以动态链接库的形式存在。

activex控件的数据输入和函数功能的执行必须通过容器,因此,activex控件必须具备如下性能机制。

1)属性和方法:activex控件必须提供属性的名称、方法的名称及参数,以便容器可以存取和改变activex控件的属性参数。

2)事件:通知容器在activex控件发生的事件,如属性参数的改变、用户的单击、双击动作等。

3)存储:容器由这项机制通知activex控件存储和提取有关信息数据。activex控件只需在windows的registry数据库中注册后,就可以像其他window应用程序一样发挥各自的功能。

二、注册activex控件的方法

使用activex控件之前必须实现注册,否则会出现错误,注册的方法有两种。

1)在window中注册activxe控件:在windows的system文件夹下有一个regsvr32.exe的程序,它就是windows自带的activex注册和反注册工具。利用它也能够非常方便地注册activex控件,选择【开始】菜单→单击【运行】菜单项→注册/卸载控件命令如表5-3所示。


表5-3  注册命令

regsvr32 <activex控件文件名>

注册指定的activex控件,activex控件的后缀为(*.ocx)

regsvr32 /u <activex控件文件名>

解除某一activex控件的注册

例如,要注册一个amovie.ocx控件,则输入regsvr32.exe amovie.ocx即可,要反注册它时只需使用regsvr32.exe /u amovie.ocx。

2)除了手动注册activex控件外,大部分情况下使用函数来实现activex控件的注册,因为使用函数来注册activex控件是很简单的。我们使用的函数就是在“xtra activex”系统函数分类中的activexcontrolregister()函数,格式为:

activexcontrolregister("filename")

我们以flash提供的“swflash.ocx”为例,注册语句为:

activexcontrolregister("c:/windows/system/m

acromed/flash/swflash.ocx")

如果把swflash.ocx拷贝到程序目录下,则可以使用:

result:=activexcontrolregister(filelocation^"swflas

h.ocx")

如果注册成功,则函数返回值为-1,否则返回值为0。

如果要解除对此控件的注册,可以使用:

activexcontrolunregister("c:/windows/system/

macromed/flash/swflash.ocx")

如果把swflash.ocx拷贝到程序目录下,则可以使用:

result:=activexcontrolunregister(filelocation^"swfl

ash.ocx")

如果解除注册成功,则函数返回值为-1,否则返回值为0。

5.3.2  如何检测activex控件

当我们在程序中使用了一个新控件,而在用户系统中运行的时候,无法保证该控件已经在用户系统中注册,这时我们就需要一个功能模块,用于检测在用户系统中,该控件是否已经注册,如果没有注册,则自动在用户系统中进行注册。

这个功能我们同样可以用authorware的系统函数来实现。用于检测一个activex控件已经在系统中注册的函数是否是:activexcontrolquery ("classid")。

其中classid为activex控件的id标识号,每一个activex控件在windows系统中都有惟一的32位的id标识号,我们必须先获得这个id标识号,才能使用该函数检测与此classid对应的activex控件是否已经注册。

在插入activex控件后,打开其属性对话框。在其属性对话框中单击“url”按钮,打开activex控件的url属性对话框,如图5-3所示。

图5-3  activex控件的url属性对话框

即可以查看该activex控件的classid,单击【copy】按钮即可将此classid复制到剪贴板中。比如shockwave flash object控件的classid就是:{d27cdb6e-ae6d-11cf-96b8-444553540000}。

获得了activex控件的classid,则检测语句如下:

result:=activexcontrolquery("{d27cdb6e-ae6d-1

1cf-96b8-444553540000}")

如果控件已经在系统中注册,则函数返回值为-1,否则返回值为0。

将需要注册的控件文件(ocx)复制到程序文件目录下。首先检测用户的系统是否支持安装activex,然后检测控件是否已经注册,方法是判断result的值是-1还是0,再决定是否要注册。

5.3.3  如何播放 *.rm格式的视频文件

一、导入*.rm文件的前提

在本地硬盘上必须安装有realplay播放器,也可以在程序中加入注册activex控件的程序,如果控件未安装则提示用户安装,realplay播放程序在网上都可以下载到。

二、导入*.rm文件的步骤

1)新建一个名为rm.a7p文件,选择【插入】→【控件】→【activex】菜单,在出现的对话框选择realplay g2 control控件,单击【确定】按钮。

2)在出现的对话框中设置控件的属性。

auto start:true,导入*.rm文件后自动播放。

controle:imagewindows,all,在展示窗中出现视频窗口和所有播放控制面板。

设置完毕单击【确定】按钮。

3)把控件命名为"rm"。然后在控件的下面加入一个名为“第一首”的计算图标。在“第一首”计算图标中输入灵下内容:

--setspriteproperty(@"activex", #open, true)

--setspriteproperty(@"activex",#autostart,true)

setspriteproperty(@"rm", #source, "2003心爱.rm")

callsprite(@"rm", #doplaypause)

4)注意,使用相对路径时,其中的“2003心爱.rm”文件和源文件必须在同一文件夹中。

5)controls可设置的属性有以下几个。

positionslider(出现进度条);

statusfield(出现状态栏);

volumeslider(出现音量控制面板);

imagewindow(出现视频窗口);

statusbar(出现更加详细的状态窗口);

controlpanel(出现播放控制栏)。

三、控制realplay g2 control控件的主要方法,如表5-4所示。

表5-4  控件介绍

调用方法函数的格式

功    能

callsprite(@"real",#doplaypause)

播放/暂停*.rm文件

callsprite(@"real",#dostop)

停止播放*.rm文件

callsprite(@"real",#aboutbox)

调出“关于”对话框

callsprite(@"real",#editpreferences)

 

callsprite(@"real",#hideshowstatistics)

 

四、流程图如图5-4所示。

图5-4  播放 *.rm文件流程图

其中,在“下一首”计算图标中输入如下内容:

setspriteproperty(@"rm", #open, true)

--setspriteproperty(@"activex",#autostart,true)

setspriteproperty(@"rm", #source, "a.rm")

callsprite(@"rm", #doplaypause)

在程序运行时,单击“下一首”按钮则播放“a.rm”。在“退出”计算图标中输入“quit()”。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表