《ActiveX 组件技术.ppt》由会员分享,可在线阅读,更多相关《ActiveX 组件技术.ppt(26页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Version 3.0第五章第五章ActiveX ActiveX 组件技术组件技术回顾回顾组件对象模型(组件对象模型(COM)创建创建 ActiveX 控件类控件类ActiveX 控件封装属性、方法和事件控件封装属性、方法和事件组件注册和使用组件注册和使用2 2目标目标理解组件和组件引用理解组件和组件引用编写编写 ActiveX DLLActiveX DLL组件组件理解和应用组件的调试和兼容性配置理解和应用组件的调试和兼容性配置在客户端实现组件接口和事件回调在客户端实现组件接口和事件回调编写编写 ActiveX EXEActiveX EXE组件组件设置组件的属性设置组件的属性3 3组件和组件设
2、计组件和组件设计ActiveX OCX 公用对话框ActiveX DLL ADO对象ActiveX EXE Word、Excel4 4ActiveX DLL组件组件 2-1ActiveX DLL的优点的优点可在应用程序之间方便地共享代码;可在应用程序之间方便地共享代码;由于此组件位于进程内,因此可提供极佳的性由于此组件位于进程内,因此可提供极佳的性能;能;为模块化程序设计提供了强有力的支持;为模块化程序设计提供了强有力的支持;ActiveX DLL的缺点的缺点增加了部署应用程序的复杂性;增加了部署应用程序的复杂性;组件和之间的依赖性导致产品的维护成本增加;组件和之间的依赖性导致产品的维护成本增
3、加;5 5ActiveX DLL组件组件 2-26 6创建创建ActiveX DLL组件组件 4-17 7创建创建ActiveXDLL的方法和事件的方法和事件PrivatevarAsStringPublicEventAfterGreetPublicSubGreet()MsgBox你好你好&var&!RaiseEventAfterGreetEndSub创建创建ActiveX DLL组件组件 4-28 8创建创建ActiveXDLL的属性的属性PublicPropertyLetMyname(nameAsString)var=UCase(name)EndPropertyPublicPropertyG
4、etMessage()Message=这是一个这是一个DLLEndProperty创建创建ActiveX DLL组件组件 4-39 9调用调用ActiveXDLL的属性和方法的属性和方法DimCAsNewA.BB.MyName=“YYY”CallB.GreetDebug.PrintB.Message创建创建ActiveX DLL组件组件 4-41010调试调试ActiveX DLLActiveX DLL1111客户程序与组件服务的例子客户程序与组件服务的例子1212组件对象的组件对象的InstancingInstancing属性属性PrivatePublicNotCreatableMultiU
5、seSingleUseGlobalMultiUse GlobalSingleUse1313MultiUse和和SingleUse客户应用程序 1客户应用程序 2EXE Server Process服务进程对象 1对象 2创建了单个进程来供多个客户的各个对象使用客户应用程序 A客户应用程序 BEXE 服务器进程1EXE服务器进程2对象 1对象 1加载的组件的不同实例1414组件兼容性设置组件兼容性设置 4-11515?组件兼容性设置组件兼容性设置 4-2使用使用Implements实现接口实现接口使用接口的好处使用接口的好处接口和面向对象多态的实现接口和面向对象多态的实现1616Server组件
6、组件PublicFunctionWaitToImp(ByVallngNumberAsLong)EndFunctionClientImplementsclsInterfacePublicFunctionclsInterface_WaitToImp(ByVallngNumberAsLong)。EndFunction组件兼容性设置组件兼容性设置 4-31717异步机制和使用接口实现异步异步机制和使用接口实现异步组件兼容性设置组件兼容性设置 4-41818注册和引用注册和引用ActiveX DLL组件组件1919ActiveX EXE组件及特点组件及特点进程外组件进程外组件可独立执行,但同时提供组件对
7、象服务可独立执行,但同时提供组件对象服务使用使用App对象的对象的StartMode属性属性远程服务组件远程服务组件2020封装封装ActiveX EXE组件组件 4-12121服务器组件服务器组件PublicEventAsynEvent(ByValstrTXTAsString)PublicEventCalculateReturn(ByVallngValueAsLong)PublicPropertyLetLast(ByVallngValueAsDouble)frmEditor.lblInfo.Caption=计算结果是:计算结果是:&CStr(lngValue)RaiseEventAsynEv
8、ent(CStr(lngValue)EndPropertyPublicFunctionFalseCalculate(ByVallngValueAsLong)AsLongfrmEditor.MousePointer=vbArrowHourglassRaiseEventCalculateReturn(lngValue)frmEditor.MousePointer=vbDefaultEndFunction封装封装ActiveX EXE组件组件 4-22222客户程序客户程序PrivateSubcmdCalculate_Click()CallEditor.FalseCalculate(CLng(txt
9、Num.Text)EndSubPrivateSubEditor_CalculateReturn(ByVallngValueAsLong)此处为真正的计算此处为真正的计算Editor.Last=g_lngValueEndSubPrivateSubEditor_AsynEvent(ByValstrTXTAsString)Me.lblValue.Caption=strTXTEndSub封装封装ActiveX EXE组件组件 4-32323使用事件实现异步回调使用事件实现异步回调封装封装ActiveX EXE组件组件 4-4客户程序请求客户程序请求服务器接收服务器接收客户计算客户计算计算结果计算结果客
10、户计算客户计算计算结果计算结果事事件件事事件件2424组件实例化的三种方法组件实例化的三种方法自动实例化自动实例化受控实例化受控实例化CreateObject对象绑定对象绑定早期绑定早期绑定后期绑定后期绑定对象实例化和对象绑定对象实例化和对象绑定2525总结总结进程内组件是进程内组件是“动态链接库动态链接库”(DLL)或或“ActiveX 控件控件”(OCX),与调用它的客户端运行于相同的地址空间中;与调用它的客户端运行于相同的地址空间中;进程外组件是在自己的地址空间中运行的进程外组件是在自己的地址空间中运行的.EXE文件,文件,ActiveX EXE组件是进程外组件,进程外组件同时具有标准组
11、件是进程外组件,进程外组件同时具有标准EXE和组件的特征;和组件的特征;设计设计ActiveX DLL需要规划其类模块的属性、方法和事件,需要规划其类模块的属性、方法和事件,这种以组件方式提供的服务同时增强了程序的内聚和偶合;这种以组件方式提供的服务同时增强了程序的内聚和偶合;通过使用通过使用 Visual Basic 的的“版本兼容版本兼容”功能,可以使组件的功能,可以使组件的功能得到增强,而不会使现有应用程序出错;功能得到增强,而不会使现有应用程序出错;使用使用 Implements 语句,可以向类模块添加多个接口,通过语句,可以向类模块添加多个接口,通过这些接口,系统可以不断扩大,而不会影响现有组件,也这些接口,系统可以不断扩大,而不会影响现有组件,也不需要进行大量重新编译;不需要进行大量重新编译;服务和客户程序之间,可以通过接口和事件机制来进行异服务和客户程序之间,可以通过接口和事件机制来进行异步通讯,异步执行将提高对系统资源的利用率,并且在一步通讯,异步执行将提高对系统资源的利用率,并且在一些应用中,服务程序可能与多个客户程序实现异步的回调;些应用中,服务程序可能与多个客户程序实现异步的回调;2626