用ATL制作ActiveX控件及其使用

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:wuang810
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:随着软件开发技术的发展,COM组件在现代编程中越来越重要,不懂得COM就很难跟上时代。COM为程序员开发Windows应用程序带来了便利,而COM最令人瞩目的实现就是ActiveX控件。该文介绍了如何用ATL技术制作轻量级的ActiveX控件,怎样在客户容器中与ActiveX控件通讯。
  关键词:COM;ATL;ActiveX;通讯
  中图分类号:TP3
  文献标识码:A
  文章编号:1009-3044(2017)10-0057-03
  1.CoM,ActiveX和ATL概述
  COM(Component Object Model,组件对象模型)是Windows操作系统的技术和核心,是搭建Windows应用程序的基础,COM技术规范描述了一种创建组件即可重复使用的对象的方法,它提供了一种基于接口查询的机制来完成对象之间的通讯,以客户/服务器程序的体系结构协同完成特定的功能,COM已经成为新世纪的Windows程序员必须掌握的技术,同时该技术已经成为Microsoft公司开发方向的重点,COM技术最令人瞩目的就是AcfiveX控件,ActiveX控件可以看作一种早期产品(即VBX)的延伸,同VBX相比,ActiveX定义了一个对程序设计语言中立的接口,ActiveX提供了如下的特性:
  1.1语言的无关性
  这使得基于Windows平台的开发工具可以混用AcfiveX控件,例如你可以用C 编写,而在Visual Basic中使用,达到二进制的设计标准。
  1.2软件版本升级的健壮性
  ActiveX控件通过提供多接口机制支持软件版本升级的健壮性,ActiveX控件的不同功能用不同的接口向外展示,要为旧的组件添加新的功能时,为组件新添加一个接口就行了,这样旧的应用程序在不进行更新的情况下运行,同时新的应用程序可以通过查询新接口利用组件的新功能。
  1.3面向对象的特性
  ActiveX控件允许以面向对象的方式傳递其功能,AcfiveX控件提供三种基本的面向对象的特性,即封装性、继承性和多态性,并且是以一种语言无关的方式提供的。
  1.4位置透明性
  ActiveX控件的用户并不需要明确的了解它所处的位置,它可能在一个DLL(同一进程)中,可能在一个EXE(不同进程)中,也可能在一个远程计算机上(分布式组件对象)。
  早期开发ActiveX控件时,必须用MFC类库,与其相比,用ATL(Active Template Library,活动模板库)开发ActiveX控件具有如下优点:小型、快速、不依赖任何DLL文件,用ATL制作的ActiveX控件能更好地支持以上特性,现在,ATL逐渐成为未来的Windows程序开发中C 的框架,它已经成为Visual c 开发环境的一部分,能更好地支持ActiveX的特性。
  2.用ATL开发一个ActiveX控件
  2.1建立工程
  利用VC的向导新建一工程,工程类型为ATL COM Ap-pWizard,工程名为MyATLActiveX,单击OK,进人下一步,选择Dvnamic Hnk Library(DLL)服务类型,其他保持缺省设置。
  2.2建立对象框架
  将工作空间窗口切换到Class View面板,右键点击MyAT-LActiveX Class,在弹出的菜单中选择NewATLObject项,进人ATL Object Wizd向导,在向导第一步中选择Coned类别和Full Control对象,单击下一步,在接下来的下一步中对新建的COM对象的属性进行设置,在Names页的ShortName框中输入组件的名字,我们输入MyATLAcfiveXCfl,其它由向导自动填充;在Attributes页中我们需要对COM对象的线程模型、接口类型等进行设置,我们设置如图1:
  单击确定,生成MyATLActiveXCfl对象的框架,系统为我们添加了IMyATLActiveXCtl接口(输入接口)、_IMyATL Ac-tiveXCflEvents接口(输出接口)、MyATLActiveXCfl类、MyAT-LActiveX,idl文件(接口描述语言文件)。
  2.3添加方法
  2.5建立代理类
  要使客户容器能够使用ActiveX控件的输出函数,必须为事件创建代理类,这是COM技术的规范,便于与组件通讯时数据的传递,在MyATLActiveXCtl类上单击右键,在弹出的菜单中选择Implement Connection Point项,进入连接点向导,如图2所示,选择_IMyATLActiveXCtlEvents接口,单击OK按钮,向导自动为我们添加了CProxy_IMyATLActiveXCtlEvents代理类及文件MyATLActiveXCP,h,并在此文件中实现了事件Fire_Re-turnData(short ResData)。
  2.6重载OnDraw函数提供控件状态的反馈
  利用Windows API函数中的GDI函数绘出控件,控件的背景采用红色,在控件中显示一个标签Data和若干兰色小方框,小方框的个数由方法SetData的参数决定。
  选择Builder菜单下的Builder MyATLActiveX,dll,完成Ac-tiveX控件的编译、注册。
  3.在容器中与ActiveX通讯
  3.1建立工程
  利用VC的向导新建基于Dialog based的工程,工程名为MyActiveXCon,其它保持缺省设置。
  3.2设计界面
  首先要做的是在对话框中安置ActiveX控件,右击对话框,在菜单中选择Insert AcitveX Control项,在对话框中选定MyAT-LActiveX Control项,再按OK,则刚建立的ActiveX控件出现在对话框中,调整其到合适位置和大小。
  下一步是将对话框和组件连在一起,在可以与MyATLAc-tiveX控件通讯(调用控件或从中接收事件)之前,必须将它添加到项目中,为此,可通过类向导为控件添加一个成员变量,从View菜单中选ClassWizard项,在MFC ClassWizard对话框中选Member Variables页;选择ActiveX控件的ID:IDC_MYAT-LACTIVEXCTLl,再选Add Varible按钮,出现Confirm Classes对话框(见图3),接受默认值并按OK,出现Add Member Vari-able对话框,可将此变量命名为m_MyControl,再按OK,你会发现CMyATLActiveX类现在已是项目的一部分了。
  3.3响应事件
  响应来自ActiveX控件的事件,右击对话框,在弹出的菜单中选择Events项,在弹出的对话框中的Object to Handlers列表框中选择IDC_MYATLACTIVEXCTLl,在事件列表框中选择我们上面建立的事件ReturnData,然后单击Add and Exit,系统自动为我们把事件处理函数添加到项目中,我们把此函数进一步完善(黑体部分为自己加入)。
  响应来自窗体的事件,双击对话框资源上的单选按钮,系统自动为我们把事件处理函数添加到项目中,我们把此函数进一步完善(黑体部分为自己加人)。
  本程序在VC 6.0下调试通过,运行结果如图4所示,用鼠标单击不同的单选按钮,ActiveX控件中兰色小方框的数目随着改变,同时反映从控件返回信息的只读文本框的内容也随着变化,从而实现了与控件的通讯。
其他文献
摘要:天线匹配网络对整部发射机的工作效率。播出质量和稳定度都有着举足轻重的作用,本文通过三个具体事例、分析了天线调配网络具体故障的处理思路和维护方法。  关键词:天线调配网络;特性阻抗;抑制;阻塞;反射;调谐;负载  中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2017)34-0041-01  中波调幅广播是一种以地面波绕射传输的无线电波,其发射天线为垂直天线,以便发射垂
<正>~~
期刊
11月5日,“应大杯”首届中国时尚皮装设计大赛在北京饭店落下帷幕。来自北京服装学院的路宽获得了金奖和最佳工艺奖,何柳颖和特木齐勒获得银奖,何柳颖同时还获得了最佳创新奖,来
丝绸一直以来都是中国人为之骄傲的符号。作为中国传统服饰文化的重要载体.丝绸概念已经走过了千年之路,在漫漫的历史长河中.它的矜贵和婉约的气质也得到了王宫将相们的推崇,丝绸
4月8日,知名品牌施华洛世奇在北京天安时间当代艺术中心以“水晶恋皮革”为主题举办了品牌今年的全球奢华巡展,并借此机会展出了来自全球40多位著名时装品牌的顶尖设计师以及时
<正>~~
期刊
<正>~~
期刊
多伦多时装周经过十多年的历练,已然颇有将帅之风。David Dixon以中流砥柱之姿态撑场多伦多时装周(2010春夏系列);加拿大时尚界的双子星座设计师夫妻档Joe Mimran和Kim Derley Ne
波普艺术(Pop Art).20世纪50年代中期诞生于英国,60年代全盛于美国.这一时期是西方工业化,商品化高度发展的年代。波普艺术家推崇消费主义,崇尚物质.同时对日常生活极其重视.主张以平
摘要:高可用性建设对医院信息系统的重要性不言而喻。各个业务系统对高可用性的需求各不相同,甚至同一业务系统在生命周期的不同时期需求也各不相同。该文总结分析了我院十多年来信息系统建设的不同时期高可用性建设方案及实施经验,说明只要抓住了“不停、不丢、可恢复”这个关键目标,就能随着技术和应用环境的不断发展,选择最合适的建设方案,建设好具有高可用性的医院信息系统,为其他医疗机构的建设提供借鉴参考。  关键词