一、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。
当我们在程序中使用了一个新控件,而在用户系统中运行的时候,无法保证该控件已经在用户系统中注册,这时我们就需要一个功能模块,用于检测在用户系统中,该控件是否已经注册,如果没有注册,则自动在用户系统中进行注册。
这个功能我们同样可以用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,再决定是否要注册。
一、导入*.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()”。
新闻热点
疑难解答