可连接对象-Read.PPT

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
可连接对象-Read

第6章 可连接对象 1. 入接口和出接口 入接口:客户完成对象的创建和释放 出接口:对拥有出接口的对象称为可连接对象,也称为源对象 这些出接口并不是 由对象来实现,而是由客户来实现,客户实现这些接口,并把这些接口指针告诉对象。以后对象利用这些接口指针与客户进行通信。 接收器:在客户程序方,实现这些接口的对象被称为接收器(sink),它本身就是一个COM对象,只用来监听并处理组件对象的通知或请求。 6.1 可连接对象结构模型 1. 客户与可连接对象之间的通信是双向的 (1) 客户调用对象所提供的服务,对象提供相应的服务给客户。 (2) 对象可以通过它的出接口向客户发出请求,或者 给客户发送通知或事件。 6.1.1. 客户与可连接对象的关系 客户程序把接收器的接口指针通过参数传递给连接对象,可连接对象记录下接收器的接口指针,以后便可通过此接口指针调用接收器的成员函数。 接收器也是一个COM对象,但是它在客户端实现,不需要COM来创建,不需要CLSID和类厂,单独的COM对象,自己的引用计数,以及接口查询。 客户与可连接对象的关系 客户与可连接对象之间的结构 (1) 因为可连接对象本身是一个COM对象,应用引用计数,因此一个接收器可以被多个可连接对象使用。 (2) 每个可连接对象也可以连接多个接收器。 可连接对象和接收器之间可以形成一对多和多对一的关系。 6.1.2 可连接对象的基本结构 在可连接对象中,通过接口IConnectionPointContainer管理所有的出接口。对应于每一个出接口,可连接对象又管理一个连接点(connection point)的对象,每一个连接点对象实现了IConnectionPoint接口,客户通过连接点对象建立接收器与可连接对象的连接, 连接点既可以访问可连接对象的内部信息,也可以访问客户方的接收器,,而且连接点对象的引用计数可以包含在可连接对象的引用计数器内部,可以直接使用可连接对象的引用计数器。 基本结构 一个可连接对象可以支持多个出接口,在接口IConnectionPointContainer的成员函数中使用一个枚举器暴露出此对象所支持的所有出接口 对于每一个出接口的连接点对象,在接口IConnectionPoint中使用一个枚举器管理它所连接的接收器。 6.2 实现可连接对象 6.2.1 枚举器 利用枚举器可以很方便的访问一组数据单元。客户程序利用枚举器对COM对象中的数据单元进行枚举操作,枚举器把客户对数据单元的操作进行了标准化,因此,COM对象可以按照标准的方法把数据提供给客户。 对枚举的数据单元可以进行Next、Skip、Reset和Clone操作 枚举器所枚举的数据单元不确定,因此使用模板ELT_T,String—IEnumString,IUnknown-IEnumUnknown 枚举器对象是一个内部对象,只暴露枚举接口,不需要CLSID和类厂. 源对象 6.2.2 源对象 源对象通过IConnectionPointContainer接口暴露自己的出接口信息,只要COM对象支持出接口,则必须实现此接口。 此接口实现了两个函数Eunm和Find。Enum用来返回连接点枚举器,以便客户利用此枚举器访问COM对象的所有连接点。Find函数根据给定的IID,返回相应出接口的连接点。 其中Enum是一个典型的枚举器接口,枚举的数据成员为连接点对象,相应的数据类型为IConnextionPiont接口。 连接点 连接点实现了IConnectionPoint接口,此接口有五个函数 GetConnectionInterface-返回对应出接口的IID GetConnectionPointContainer-返回源对象的此接口指针 Advise-建立接收器和源对象之间的连接 Unadvise-取消连接 EnumConnections-访问建立的连接,返回连接枚举器对象 实现可连接对象 6.2.4 建立连接过程 假设源对象支持出接口 ISome,客户方创建了一个接收器对象,它实现了接口ISome,接口指针为pSome。以下是客户如何从一个基本的IUnknown接口指针pUnk建立连接的过程步骤。 (1) 调用pUnk-QueryInterface(IID_ICPC, pCPC),如果不成功,则不支持出接口。 (2) 调用pCPC-Find(IID_ISome,pCP),如果不成功,则表明不支持出接口ISome。调用pCPC-release()。 (3) 调用pCP-Advise(pSome,dwCookie)建立与接收器的连接。客户保存连接标识dwCookie,以后断开连接时需要用到dwCo

文档评论(0)

xiaozu + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档