利用编写组件精选PPT.ppt
《利用编写组件精选PPT.ppt》由会员分享,可在线阅读,更多相关《利用编写组件精选PPT.ppt(43页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、利用编写组件利用编写组件第1页,此课件共43页哦2利用利用ATLATL编写编写COMCOM组件组件1COM组件与ATL2利用ATL创建COM组件 3在VC和VB中使用COM组件 第2页,此课件共43页哦31 1COMCOM组件与组件与ATLATL目录1.1COM概述 1.2COM与软件复用 1.3与COM有关的概念1.4ATL简介 第3页,此课件共43页哦41.11.1 COMCOM概述概述 COM是组件对象模型,在Windows操作系统下COM组件很多,组件是C+面向对象思想在软件业的应用,它是一种创建二进制软件组件的体系,是一种与平台无关、语言无关、分布式的面向对象的体系。它不是一种面向对
2、象的语言,而是一种标准,COM描述了如何创建对象的一个模型以及在COM对象间进行通讯所需要的内容。因此,从功能上讲COM更像一个协议,一个二进制级别上组件重用的协议。第4页,此课件共43页哦5 1.2 1.2 COMCOM与软件复用与软件复用 在软件开发过程中,人们提出软件的制造能否像硬件的生产一样,实现规约化的组装。答案是肯定的,利用Microsoft的COM技术编写的组件就可以达到这个目的。软件复用避免了软件开发过程中的重复劳动的解决方案,其出发点是应用系统的开发不再采用一切“从零开始”的模式,每个COM组件有自己的属性和操作,是一个相对独立运行的实体。从软件复用种类的定义看,COM技术实
3、质上是一种模块复用的情况。采用组件开发软件就像搭积木一样容易,组件单独开发并作为软件模块使用,它具有明确的接口,客户通过这些接口调用组件所能提供的服务,将多种组件拼装起来就能构成大型的组件以至建立整个系统。第5页,此课件共43页哦61.31.3 与与COMCOM有关的概念有关的概念 1对象 对象代表现实中的某个实体,是类的实例。在COM中,对象也是类的实例,但是COM对象与面向对象模型的类对象有区别。COM是与软件开发语言无关、平台无关,而面向对象模型中的类对象在不同的语言下是有区别的。2接口 动态链接库DLL是通过导出一系列函数来让客户程序使用的,只有知道了DLL的导出函数列表才能使用它。C
4、OM组件的载体也是一个DLL,COM组件是通过接口与客户进行通讯的,但它是一个抽象类(含有纯虚函数的类)。下面是一个接口的简单定义:第6页,此课件共43页哦7与与COMCOM有关的概念有关的概念(2(2)Interface Ideposit:Iunknownvirtual HRESULT GetMoney(int*nMoney)=0;Iunknown接口很重要,其定义如下:Struct Iunknownvirtual HRESULT QueryInterface(REFID iid,void*ppvobj)=0;/查询是否支持接口virtual ULONG AddRef()=0;/引用计数加1
5、virtual ULONG Release()=0;/引用计数减1第7页,此课件共43页哦8与与COMCOM有关的概念有关的概念(3 3)3类与类工厂 类是COM接口的实现,所有的COM对象都是COM类的实例。一个COM类也是用一个GUID来标识,在类中称它为“类标识符”(CLSID:Class Identifier)。每个类也有一个字符串名称,叫做“编程标识符”.4组件 组件就是实现了指定接口并被封装在DLL或可执行文件中的软件模块,它能够实现由接口指定的功能,主要用来创建COM对象的。一个组件包括该COM类和实现该类工厂的程序代码,有时也称它为“服务器”。一个组件可以包括多个COM对象,每
6、个COM对象可以实现多个接口。第8页,此课件共43页哦9与与COMCOM有关的概念有关的概念(4 4)5注册与注册表 组件编好之后,编译出来的DLL文件还必须在注册表中注册后才能被其它用户使用。因为只有这样,用户在创建COM对象时,系统才能在注册表中获取相应对象的位置,才能创建对 象,对 于 DLL型 的 组 件,需 要 调 用RegSvr32.exe来完成,对于EXE型的组件,只要服务器运行过一次,该组件就会自动进行注册。返回 第9页,此课件共43页哦101.41.4 ATLATL简介简介 ATL(ActiveX Template Library,活动模板库)是一套C+的模板库,利用它可以很
7、方便地建立小型的、基于COM的组件,对COM组件的开发提供了最大限度的代码自动生成以及可视化的支持。模板是ATL的核心技术。1什么是模板 模板(Template)是基于类型参数产生类和函数的一种机制。模板在不降低类型安全的基础上,可以显著地减少代码量,增加代码的灵活性。模板包括函数模板和类模板,本节只讲类模板。2类模板 类是对问题空间的抽象,而类模板则是对类的抽象,即更高层次上的抽象。使用类模板,可以指定操作于某个数据类型的一族类。在程序中,可以首先定义一个类模板,然后通过使用不同的实参生成不同模板类的对象。第10页,此课件共43页哦11ATLATL简介简介(续)(续)类模板的定义方法为:te
8、mplate class 类名 ;类模板的具体内容与普通类没有本质的区别,只是其员中要用到类模板的类型参数。【例15-1】一个类模板实例。程序的主文件名为MyTemplate.cpp。第11页,此课件共43页哦122 2利用利用ATLATL创建创建COMCOM组件组件本节以一个字符串处理的组件为例来阐述如何利用ATL来制作COM组件。编程的思路为:(1)在VC下创建一个ATL工程,并对工程的可选项进行设置;(2)向工程中添加ATL对象,并对该对象进行一些初始配置工作;(3)根据COM组件的功能,向新的ATL对象中加入新的接口定义,包括方法和事件的定义,并实现相应的接口成员函数;(4)编译链接该
9、工程,注册COM组件;(5)编写组件测试程序,验证组件的功能。第12页,此课件共43页哦13利用利用ATLATL创建创建COMCOM组件组件目录目录2.1创建ATL应用程序框架 2.2在工程中添加ATL对象 2.3在COM组件中添加方法2.4ATL中的字符串数据类型 2.5编译IDL并注册COM组件 第13页,此课件共43页哦142.12.1 创建创建ATLATL应用程序框架应用程序框架 1在VC开发环境下,选择File|New菜单,将弹出的New对话框切换到Projects选项卡后,选 择 ATL COM AppWizard项,在 Project name编辑框中输入MyCom工程名称,并设
10、置好工程所在的文件夹。如图右图所示。第14页,此课件共43页哦15创建创建ATLATL应用程序框架(应用程序框架(续)续)2 单 击“OK”按 钮,进入图2所示 的 选 择ATL组件类型对话框。2选择选择COM组件类型对话框组件类型对话框第15页,此课件共43页哦16创建创建ATLATL应用程序框架应用程序框架(续)(续)ATL组件类型一共有三种:第一种是DLL类型;第二种是EXE类型;第三种是Service类型,它也是一个典型的进程外组件。Service是Windows2000的一种应用服务,当操作系统启动的时候,该Server自动运行。由于进程外组件的执行效率较低,我们选择DLL类型的。选
11、择完后,按“Finish”按钮,结束ATL创建组件的向导生成步骤,最终在磁盘上生成了组件的框架代码。表1列出了该工程中的主要文件的信息。第16页,此课件共43页哦17表表1 AppWizard生成的生成的MyCom工程中的文件工程中的文件 return文件名文件名文件说明文件说明MyCom.cpp工程的主文件,其中有组件的接口函数和注册函数工程的主文件,其中有组件的接口函数和注册函数MyCom.def工工程程的的DLL模模块块定定义义文文件件,它它与与前前面面讲讲的的DLL库库中中的的Def文文件的含义相同件的含义相同MyCom.idl工工程程的的接接口口定定义义语语言言文文件件,COM是是靠
12、靠接接口口定定义义语语言言来来定定义义组组件件间间、组组件件与与客客户户间间的的接接口口定定义义,它它是是COM组组件件的的入入口口点点MyCom.rc工程的资源文件,与别的工程的资源文件,与别的MFC程序的资源文件类似程序的资源文件类似Resouce.h工工程程的的资资源源文文件件的的头头文文件件,与与别别的的MFC程程序序的的resource.h类类似似Stdafx.h工程的标准头文件,与别的工程的标准头文件,与别的MFC程序的程序的stdafx.h类似类似Stdafx.cpp工程的标准实现文件,与别的工程的标准实现文件,与别的MFC程序的程序的stdafx.cpp类似类似Str.rgs工
13、程的注册脚本文件工程的注册脚本文件第17页,此课件共43页哦182.22.2 在工程中添加在工程中添加ATLATL对象对象1.选 择 Insert|New ATL Object,弹出如图3所示的对话框,从Objects列表框中选 择 Simple Object项后,单击“Next”按钮继续。图图3插入一个基于插入一个基于ATL的的COM类类 前面已经创建了一个前面已经创建了一个MyCom工程,接下来,使用工程,接下来,使用VC的的ATL Object Wizard工具,可以方便地往工程中添加工具,可以方便地往工程中添加ATL对象对象。第18页,此课件共43页哦192.22.2 在工程中添加在工
14、程中添加ATLATL对象对象(续续)2 系 统 弹 出 一 个ATL Object Wizard Properties对 话 框。在Short Name中输入Str,在COClass编辑框中输入StrCom,如图4所示。注意在Name选项卡中,可以键入类与文件名。默认情况在,Short Name名字是其它名字的词根。可以不接收默认的名字而键入自己的名称。图4窗口中的Class是对象所实现的类的名称,CoClass为包含对象 支 持 的 一 些 接 口 的 名 称,Interface为对象创建的接口名字,Type为有关注册对象的描述性字符串,Prog ID为容器所使用的名字以代替对象的CLSID
15、。图图4 4 设置设置COMCOM类的属性类的属性第19页,此课件共43页哦202.22.2 在工程中添加在工程中添加ATLATL对象对象(续续)3切换到图5所示的Attribute选项卡,设置StrCom对象的属性,如组件的线程模式、接口类以及是否支持聚集等属性。我们使用系统的默认属性。单击“OK”按钮,就 生 成 了 一 个StrCom组件对象。图图5设置组件对象的属性图设置组件对象的属性图第20页,此课件共43页哦212.32.3 在在COMCOM组件中添加方法组件中添加方法 1方法的添加 进入Workspace窗口的ClassView面板,在IStr接口上右击鼠标,选择Add Meth
16、od菜单项后,弹出如图6所示的增加方法接口对话框,在Method Name编辑框中输入FirstToUpper,在Parameters编辑框中输入“in BSTR InData,outBSTR*OutData,out,retvallong*result”后,按OK按钮结束方法的添加。图图 6添加添加FirstToUpper方法方法第21页,此课件共43页哦222.32.3 在在COMCOM组件中添加方法组件中添加方法(续)(续)第一个参数为InData,它是具有“in”属性的字符串变量,它是输入参数,代表欲转换的字符串;第二个参数为outData,它是具有“out”属性的字符串变量,它是输出参
17、数,代表转换完后的的字符串;第三个参数为result,它是具有“out”和“retval”属性,意思是说该参数是作为返回值来用的输出参数,其类型是指向长整型的指针变量。此时用户在ClassView中就可以看到Istr接口中的FirstToUpper的方法。如图7所示。图图7Istr接口的方法接口的方法FirstToUpper第22页,此课件共43页哦232.32.3 在在COMCOM组件中添加方法组件中添加方法(续)(续)2方法的实现 在Workspace窗口的ClassView面板中,将类CStr展开,接着,再将该类中的Istr接口展开,双击方法FirstToUpper(char*sourc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 利用 编写 组件 精选 PPT
限制150内