ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:86.71KB ,
资源ID:10288314      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-10288314.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(ActiveX技术.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

ActiveX技术.docx

1、ActiveX技术一、ActiveX技术 ActiveX技术的出现对于Internet的发展起着十分重要的作用。在网络上,ActiveX部件能够帮助应用程序开发者和Web网页制作者建立动态的网页和站点。使用ActiveX技术建立具有漂亮的交互式界面和强大功能的Internet应用程序已经成为十分容易的事情。实际上,ActiveX技术已成为微软技术发展的重点。 多少年来,人们在软件开发中一直在探索软件重用技术。软件重用可以提高软件开发速度,还可以显著地提高软件质量。早期软件重用的形式有源代码重用、目标代码重用和类库。源代码重用就是将源代码在程序之间复制使用,这是最低级的重用。这种方法有很大的局限

2、性,程序员往往很难读懂别人编写的代码,在重用过程中也容易犯错误。目标代码重用靠函数库来实现。相对于源代码重用,它的优点是程序员不用再研究源代码,而且函数库一般都提供了清晰的调用接口。但目标代码重用的缺点在于受限于语言,不能做到与开发平台无关,而且函数库靠传统的编程手段来实现,无法将代码与数据有机地结合在一起。类库与函数库一样,也是二进制代码,但它是建立在面向对象技术的基础之上,使软件的可重用性和可维护性得到大大增强。类库也是与特定的开发语言相关的。 部件是目前最优秀的软件重用手段,基于部件的软件开发是目前最先进的软件开发技术。部件是具有特定功能的对象形式的二进制软件模块。基于部件开发技术的出现

3、将对现有的软件开发带来深刻的影响。程序员不用一遍又一遍做重复性的劳动,他们既可以自己开发部件,将业务规则封装在部件中,也可以利用第三方开发的现成部件,然后再将这些部件组装起来,就形成一个软件。软件的开发形式类似于搭积木,基于部件的软件开发提高了软件开发的效率,使软件更易于维护,更适应于大规模的软件生产。 在目前基于部件的开发中,应用最广泛的就是微软的ActiveX部件。所谓ActiveX部件是指可重用的对象形式的二进制代码,比如一个.exe、.dll或.ocx文件,它们在提供对象时遵循ActiveX技术的规范。利用ActiveX部件技术,可以实现业务的封装,开发出能够实现不同业务功能多种Act

4、iveX部件,或是购买第三方提供的ActiveX部件,然后在应用软件的开发中就可以重复利用这些部件,将它们组装在应用软件中。 在Visual Basic中可以使用的ActiveX部件有:ActiveX控件、ActiveX文档、ActiveX DLL和ActiveX EXE。ActiveX控件是可视的ActiveX部件,可用于快速地组建应用程序; ActiveX文档可创建交互式的Internet应用程序;ActiveX DLL和ActiveX EXE是代码部件,提供了对象形式的库。使用ActiveX部件的应用程序调用ActiveX部件采用的是客户机/服务器模式。服务器就是提供具体功能的部件;客户

5、机是使用部件的应用程序或另一个部件。ActiveX部件可能和客户应用程序运行在同一个进程中,也可能运行在不同的进程中。通常,如果ActiveX部件作为一个可执行文件(.exe文件)来实现,它就是一个进程外服务器,运行在它自己的进程中。如果它作为一个动态链接库被实现,则它是一个进程内服务器,和客户应用程序运行在同一个进程中。通常,使用进程内服务器的应用程序比使用进程外的服务器的应用程序执行起来要快些,因为应用程序不必跨进程来使用对象的属性、方法和事件。二、创建ActiveX控件 相对于ActiveX DLL和ActiveX EXE部件,ActiveX控件是具有可视化界面的对象部件。利用控件,可以

6、快速地创建应用程序,还可以建立动态的网页。Visual Basic 6.0不仅提供了许多功能强大的ActiveX控件,还可以使编程人员创建用户自己的ActiveX控件。在本例中,我们将创建AboutBox控件。众所周知,大多数Windows应用程序都带有一个AboutBox窗口,用于显示软件的名称、版本号以及版权提示等信息。我们可以通过创建一个控件在应用程序中显示AboutBox窗口。1. 创建AboutControl工程 (1) 启动Visual Basic 6.0。在“文件”菜单上单击“新建工程”菜单项,打开“新建工程”对话框。双击“ActiveX控件”图标用以创建新工程。Visual B

7、asic自动地把一个控件UserControll,包括其设计器添加到此工程中。缺省名UserControll作为设计器的标题出现,此时可以观察到在Visual Basic集成开发环境中的“工具箱”中添加了一个名为UserControll的控件图标,并以灰色显示,表示目前控件尚不可用,还需要按以下的步骤进行操作才能使控件变为可用。 注意 一个ActiveX控件工程中可以包含多个控件。缺省情况下,创建一个新的 ActiveX控件工程时,其中包含一个UserControl1控件。用户还可以使用“工程”菜单中的“添加UserControl”菜单命令向工程中添加控件。 (2) 在“工程”菜单上,单击“工

8、程1属性”菜单项,打开“工程属性”对话框。选择“通用”选项卡,将 工程名称 改为:AboutControl。选择“生成”选项卡,设置版本号和版本信息。单击“确定”按钮。 (3) 在“工程资源管理器”窗口中选中UserControl1,在“属性”窗口中双击Name属性,把用户控件名改为AboutBox。新名字出现在设计器的标题和“工程资源管理器”窗口中。 (4) 在该控件设计器中,灰色的区域就表示控件本身的尺寸,即该控件被拖放在一个窗体上时的大小。控件右下角的拖曳点可调整控件的大小,可以将AboutBox控件设置成适当的大小。(5) 在“文件”菜单上,单击“保存工程”菜单命令可保存工程文件,保存

9、文件时所用的文件名如下表一所示。控件中诸如位图之类的二进制信息将会保存到和用户控件文件同名的二进制文件中,扩展名为ctx。表一 保存文件时所用的文件名文 件文 件 名扩 展 名用户控件AboutBox.ctl工程AboutControl.vbp2. 设计控件的可视化界面 我们可使用诸如Circle、Line等图形方法在UserControl控件设计器中的UserControl控件区域上进行绘制,或者将已有的ActiveX控件和Visual Basic内在的控件放置到UserControl控件区域上,从而创建自己控件的外观。添加给UserControl控件并为其创建外观的那些控件就称之为子控件。

10、 (1) 在“工程资源管理器”窗口中双击AboutBox,打开它的设计器。 (2) 在212具箱”上双击Label控件,把Label控件放置到AboutBox控件设计器中,命名为:lblTitle,此控件用于显示程序的名称。 (3) 重复上一步操作,再把两个Label控件放置到AboutBox控件设计器中,分别命名为:lblVersion和lblCopyRight,用于显示版本号和版权提示。(4) 用鼠标调整Label控件的大小和位置。(5) 增加其他修饰和功能。 这样就完成了控件的可视化设计。3. 设置控件的属性 可以在ActiveX控件中添加属性和方法。在本例中,我们将给AboutBox控

11、件添加三个属性;Title、Version和Copyright,分别表示程序名称、版本号和版权提示。 (1) 在“工程资源管理器”窗口双击AboutBox,打开其设计器,然后再双击AboutBox,打开其“代码”窗口。 (2) 在“工具”菜单上,单击“添加过程”菜单项,打开“添加过程”对话框。在“名称”框中输入Title,单击“属性”和“公共的”选项,然后单击“确定”按钮。 (3) 重复上一步操作,再以同样的方式添加两个属性:Version和Copyright。 (4) 在“代码”窗口中,添加如下代码: Public Property Get Title() As String Title =

12、 lblTitle.CaptionEnd Property获取属性 Title 属性Public Property Let Title(ByVal vNewValue As String) lblTitle.Caption = vNewValue PropertyChanged TitleEnd Property设置 Title 属性Public Property Get Version() As String Version = lblVersion.CaptionEnd PropertyPublic Property Let Version(ByVal vNewValue As Strin

13、g) Label2.Caption = vNewValue PropertyChanged VersionEnd PropertyPublic Property Get Copyright() As Variant Copyright = lblCopyRight.CaptionEnd PropertyPublic Property Let Copyright(ByVal vNewValue As Variant) lblCopyRight.Caption = vNewValue PropertyChanged CopyrightEnd Property 注意 如上所示,在将Get属性过程的返

14、回值和Let属性过程的参数的数据类型的声明改为As String时,要注意必须同时更改两个声明行,即PropertyGet和PropertyLet的声明必须匹配。使用特定的类型名可加快执行速度,并且能为使用控件的开发者提供类型检查。作为对比Copyright的Get属性过程的返回值和Let属性过程的参数的数据类型的声明未作改变。 无论何时给Title属性赋新值均执行Property Let过程,它把新值保存到AboutBox控件上的lblTitle控件的Caption属性中。无论何时检索该属性值均执行Property Get过程,它要读取保存在lblTitle控件中的Caption属性的值。V

15、ersion属性和Copyright属性与此类似。 控件中的Property Let过程必须调用Property Changed函数。Property Changed函数的作用是通知容器某个属性的值已经变更。这里用到了容器这个概念,对于控件来说,它的容器就是窗体,即放置控件的地方。在Property Let过程中调用Property Changed函数,是因为控件的属性被赋了新的值,需要告诉“属性”窗口刷新其显示内容,并通知Visual Basic放置此控件的窗体已经改变了。(5) 为了初始化Title、Version和Copyright属性,在UserControlInitialize事件过

16、程中添加如下代码:Private Sub UserControl_Initialize() 初始化 Title = App.Title Version = 版本 & App.Major & . & App.Minor & . & App.Revision Copyright = App.LegalCopyrightEnd Sub至此,属性设置工作已经完成,可以创建测试工程对控件进行测试了。 4. 创建测试工程 为了测试AboutBox控件,需要创建一个测试窗体。通过在测试窗体放置AboutBox控件的实例,可以对该控件进行测试。 ActiveX控件是进程内部件,为了能够调试进程内部件,Visu

17、al Basic允许在一个工程组中加载多个工程。除了允许进程内调试外,工程组的使用还简化了部件工程和测试工程的加载。 在工程组中添加测试工程: (1) 在“文件”菜单中,单击“添加工程”菜单项,打开“添加工程”对话框。 (2) 双击“标准EXE”图标,添加一个标准EXE工程。在该工程上单击右键,打开上下文菜单,选择“设置为启动”,将该新工程设置成为这个工程组的启动工程。此时在“工程资源管理器”窗口中可以看到两个工程,而且“工程资源管理器”窗口标题栏显示的是缺省的工程组名称。注意在“工程资源管理器”窗口中“工程1”是以粗体显示的,表明“工程1”是启动工程,也就是在按F5键时要运行的工程。 (3)

18、 在“文件”菜单中,单击“保存工程组”菜单项,保存测试工程和工程组。按表二所示方式给文件命名。表二 保存文件时所用的文件名文 件文 件 名扩 展 名窗体TestAbout_Form1.ctl工程TestAbout.vbp工程组TestAbout.vbg 5. 测试控件 (1) 在“工程资源管理器”窗口中双击AboutBox,将控件设计器置前,然后按下Ctrl+F4键来关闭窗口。关闭设计器窗口使Visual Basic把“工具箱”中本来以灰色显示的AboutBox控件的图标变为有效,表示AboutBox控件现在可用。 注意 不要单击工具栏上的“启动”按钮或者按下F5键,因为那样会使整个工程组进入

19、运行模式从而无法把新控件添加到窗体中。 (2) 在“工程资源管理器”窗口中双击Forml使其置前。 (3) 双击AboutBox图标,把AboutBox控件添加到Forml中,该控件以带有抓取控点的灰色平面矩形的形式出现。在“属性”窗口可以看见新控件的许多属性,其中就有刚才创建的Title、Version和Copyright属性。刚刚添加到窗体的AboutBox控件被赋予缺省名AboutBoxl。 (4) 在Forml上双击AboutBox控件,打开Forml的“代码”窗口,光标将出现在AboutBox控件的缺省事件过程AboutBoxlGotFocus上。你可以单击“过程”下拉列表来查看Vi

20、sual Basic自动为该控件提供的另外四种事件。完成工作后要关闭“代码”窗口。 (5) 在“工程资源管理器”窗口中双击AboutBox以便打开AboutBox控件设计器。注意放在Forml上的AboutBox控件标记上了阴影,这表明它是非活动的。打开一个控件的设计器会使该控件的所有实例变成非活动的,更改控件“代码”窗口中的代码也会使控件实例变成非活动的。 (6) 确保AboutBox控件的设计器在前面,然后按下Ctrl+F4键关闭窗口,重新激活控件实例。阴影从Forml的控件上消失表明实例又被激活了。如果由于改动控件的代码而使控件变成非激活状态时,可用鼠标右键单击测试窗体来显示上下文莱单,

21、单击“更新用户控件”可重新激活控件实例。 (7) 在工具栏上单击“启动”按钮运行TestAbout工程,可以看见运行的结果。6. 使用ActiveX控件界面向导前面“设置控件的属性”部分中,控件属性的设置是通过添加Property过程实现的。实际上,Visual Basic 6.0开发环境中提供了ActiveX控件界面向导(ActiveX Control Interface Wizard),可以帮助编程人员更容易地建立控件的属性、方法和事件。这个向导可以利用外接程序管理器添加到开发环境中。在这一部分将逐步介绍ActiveX控件界面向导的使用方法。(1) 如果TestAbout工程仍在运行模式中

22、,单击Forml上的“关闭”按钮以返回设计模式。(2) 在“工程资源管理器”窗口中双击AboutBox使其置前,再双击控件设计器中 AboutBox,打开其“代码”窗口。(3) 将“代码”窗口中已有的代码全部删除。(4) 在“外接程序”菜单中,单击“外接程序管理器”菜单项,打开“外接程序管理器”对话框,选中VB ActiveX 控件接口向导,单击“加载卸载”检查框,然后单击“确定”按钮。(5) 在“外接程序”菜单中,单击“VB ActiveX 控件接口向导”菜单项,打开向导的第一个窗口“介绍“。 注意 在使用ActiveX控件界面向导之前,必须先设计好控件的外观。(6) 单击“下一步”按钮,进

23、入“选定界面成员”窗口。向导程序在这个窗口中提示为该用户控件选择标准的界面成员,即属性、方法和事件。左侧窗口是可以放入用户控件的一系列属性、方法和事件的列表。右侧窗口显示的是Visual Basic已经为该控件选定的常用的界面成员。按动两个窗口之间的箭头按钮可以在两窗口之间选择或清除界面成员。在本例中,AboutBox控件中只保留DblClick事件。(7) 单击“下一步“按钮,进入“创建自定义界面成员”窗口。在这个窗口中可以为用户控件添加定制的属性、方法和事件。按“新建”按钮,显示“增加自定义成员”窗口。在“名称”框中写入Title,并选择“属性”选项,然后单击“确定”按钮。这就为用户控件增

24、加了一个 Title属性,并显示在“自定义成员”框中。重复同样的方法,再增加Version和Copyright属性。(8) 单击“下一步“按钮,进入“设置映射”窗口。这一步骤是为了把用户控件的一些界面成员映射到子控件的界面成员上。子控件就是在设计控件外观时,放置在用户控件上的 ActiveX控件和Visual Basic标准控件。如果把用户控件的定制属性映射到子控件的属性上,那么在获取或设置用户控件属性时,其实是在获取或设置子控件的属性。为了把Title属性映射到lblTitle的Caption的属性,在左侧的“公有名称”框中选择Title,在右侧的“控件”列表中选择lblTitle,在“成员

25、”列表中选择Caption。为了把Version属性映射到lblVersion的Caption的属性,在“公有名称”框中选择Version,在“控件”列表中选择lblVersion,在“成员”列表中选择Caption。为了把Copyright属性映射到lblCopyRight的Caption的属性,在“公有名称”框中选择Copyright,在“控件”列表中选择lblCopyRight,在“成员”列表中选择Caption。在设置事件映射时,区分清UserControl控件对象(或者它内部的子控件)接收的事件与控件引发的事件这一点非常重要。用户控件(或者它内部的子控件)接收的事件表示在用户控件区域

26、或子控件上操作时,它们响应的事件,这些事件的事件过程存在于ActiveX控件工程中UserControl模块的“代码”窗口中。而用户控件引发的事件表示用户在此控件的区域上操作时它引发的事件,这些事件的事件过程存在于控件所在窗体的“代码”窗口中。这样,使用该ActiveX控件的用户在窗体上放置了该控件后,就能在窗体的“代码”窗口中针对该控件的事件过程编程。在本例中,选择“公有名称”框中的DblClick事件,在“控件”列表中选择UserControl,在“成员”列表中选择DblClick,如图816所示。这样,当用户在UserControl控件上双击鼠标时,UserControl控件接收DblC

27、lick事件,调用UserControl控件中的DblClick事件的事件过程,在此事件过程中又通过RaiseEvent语句引发一个DblClick事件,发给UserControl控件所在的窗体,在UserControl控件所在的窗体中就会增加一个UserControl_DblClick事件过程,用户可以在此事件过程中编程。(9) 单击“下一步”按钮,进入“完成”窗口。单击“完成”按钮,结束使用ActiveX控件界面向导来建立用户控件界面的工作。(10) ActiveX控件界面向导在AboutBox控件的“代码”窗口中自动产生了如下代码:事件声明:Event Click() MappingIn

28、fo=cmdOK,cmdOK,-1,ClickPrivate Sub cmdOK_Click() RaiseEvent ClickEnd SubRaiseEvent 把控件或其上的子控件的事件进行转发,因为控件总是由其它的子控件组成注意!不要删除或修改下列被注释的行!MappingInfo=lblTitle,lblTitle,-1,CaptionPublic Property Get Title() As String Title = lblTitle.CaptionEnd PropertyPublic Property Let Title(ByVal New_Title As String)

29、 lblTitle.Caption() = New_Title PropertyChanged TitleEnd Property注意!不要删除或修改下列被注释的行!MappingInfo=lblVersion,lblVersion,-1,CaptionPublic Property Get Version() As String Version = lblVersion.CaptionEnd PropertyPublic Property Let Version(ByVal New_Version As String) lblVersion.Caption() = New_Version P

30、ropertyChanged VersionEnd Property注意!不要删除或修改下列被注释的行!MappingInfo=lblCopyRight,lblCopyRight,-1,CaptionPublic Property Get Copyright() As String Copyright = lblCopyRight.CaptionEnd PropertyPublic Property Let Copyright(ByVal New_Copyright As String) lblCopyRight.Caption() = New_Copyright PropertyChange

31、d CopyrightEnd Property从存贮器中加载属性值Private Sub UserControl_ReadProperties(PropBag As PropertyBag) lblTitle.Caption = PropBag.ReadProperty(Title, 通用库房管理) lblVersion.Caption = PropBag.ReadProperty(Version, 1.0.0 版) lblCopyRight.Caption = PropBag.ReadProperty(Copyright, 陕西省信息网络与软件创新工程中心 2003年版权所有(C)End Sub将属性值写到存储器Private Sub UserControl_WriteProperties(PropBag As PropertyBag) Call PropBag.WriteProperty(Title, lblTitle.Caption, 通用库房管理) Call PropBag.WriteProperty(Version, lblVersion.Caption, 1.0.0 版) Call PropBag.WriteProperty(Copyright, lblCopyRight.Caption, 陕西省信息网络与软件创新工程中心 200

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2