- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Advanced VB Programming/Chapter 5/Slide # of 23 第五章 ActiveX 组件技术 回顾 组件对象模型(COM) 创建 ActiveX 控件类 ActiveX 控件封装属性、方法和事件 组件注册和使用 ActiveX DLL的优点 可在应用程序之间方便地共享代码; 由于此组件位于进程内,因此可提供极佳的性能; 为模块化程序设计提供了强有力的支持; ActiveX DLL的缺点 增加了部署应用程序的复杂性; 组件和之间的依赖性导致产品的维护成本增加; 创建ActiveX DLL的方法和事件 Private var As String Public Event AfterGreet Public Sub Greet() MsgBox 你好 var ! RaiseEvent AfterGreet End Sub 创建ActiveX DLL的属性 Public Property Let Myname(name As String) var = UCase(name) End Property Public Property Get Message() Message = 这是一个 DLL End Property 调用ActiveX DLL的属性和方法 Dim C As New A.B B.MyName = “YYY” Call B.Greet Debug.Print B.Message Private PublicNotCreatable MultiUse SingleUse GlobalMultiUse GlobalSingleUse 使用Implements实现接口 使用接口的好处 接口和面向对象多态的实现 ’Server组件 Public Function WaitToImp(ByVal lngNumber As Long) End Function ’Client Implements clsInterface Public Function clsInterface_WaitToImp(ByVal lngNumber As Long) 。。。 End Function 进程外组件 可独立执行,但同时提供组件对象服务 使用App对象的StartMode属性 远程服务组件 ’服务器组件 Public Event AsynEvent(ByVal strTXT As String) Public Event CalculateReturn(ByVal lngValue As Long) ? Public Property Let Last(ByVal lngValue As Double) frmEditor.lblInfo.Caption = 计算结果是: CStr(lngValue) RaiseEvent AsynEvent(CStr(lngValue)) End Property ? Public Function FalseCalculate(ByVal lngValue As Long) As Long frmEditor.MousePointer = vbArrowHourglass RaiseEvent CalculateReturn(lngValue) frmEditor.MousePointer = vbDefault End Function ’客户程序 Private Sub cmdCalculate_Click() Call Editor.FalseCalculate(CLng(txtNum.Text)) End Sub Private Sub Editor_CalculateReturn(ByVal lngValue As Long) …’此处为真正的计算 Editor.Last = g_lngValue End Sub Private Sub Editor_AsynEvent(ByVal strTXT As String) Me.lblValue.Caption = strTXT End Sub 使用事件实现异步回调 组件实例化的三种方法 自动实例化 受控实例化 CreateObject 对象绑定 早期绑定 后期绑定 总结 进程内组件是“动态链接库”(DLL) 或“ActiveX 控件”(OCX),与调用它的客户端运行于相同的地址空间中; 进程外组件是在自己的地址空间中运行的 .EXE文件,ActiveX EXE组件是进程外组件,进程外组件同时具有标准EXE和组件的特征; 设计ActiveX DLL需要规划其类模块的属性
文档评论(0)