可连接点对象及示例(一)

2023-10-30

转载请标明是引用于 http://blog.csdn.net/chenyujing1234

参考书本:

《EVC高级编程及其应用开发》

 

 

客户是主动的,而组件是被动的,组件通过自身暴露给客户的接口来监听客户请求,一旦接收到客户请求便宜做出反应,

这样的接口称为“入接口”(Incoming Interface).

与入接口相对应,对象也可以提供"出接口",对象通过这些出接口与客户进行通讯。出接口包含一组成员函数,每个函数代表一个通知。

如果一个COM对象支持一个或多个接口,那么我们称这样的对象为可连接对象(Connectable Object).

出接口与入接口的区别:

入接口是由COM对象本身来实现的,而出接口是由客户程序来祥瑞的,客户程序实现这些接口,并把接口指指告诉对象,以后对象便利用此接口与客户程序通信。

在客户程序方,实现这些接口的对象称为"接收器"(Sink).

整个通讯过程涉及到三个独立又相关的部分:客户、对象和接收器。

以下是它们的关系:

1、可连接对象的基本结构

可连接对象可以通过一个或多个出接口与客户端通讯。COM中约定可连接对象必须实现一个IConnectionPoointCaotiner接口,用于管理所有的出接口。

每个出接口对应一个连接点对象,而连接点对象实现了IConnectionPoint接口,客户可通过IConnectionPoint接口与连接对象建立连接。

2、客户程序与可连接对象的关系。

连接器也是一个COM对象,它位于客户程序内部,并不需要通过COM库来创建,因此接收器不需要CLSID标识。

客户与可连接对象建立连接的过程如下:

(1)调用pUnk->QueryInterface3(IID_IConnectionPointContainer,&pConnectionPointContainer),得到连接点容器接口

(2)调用pConnectionPointContainer->FindConnectionPoint(IID_IsomeEventSet, pConnectionPoint)查找指定的连接点对象

(3)调用pConnectionpoint->Advise(pSomoeEventSet, &dwCookie)建立与接收器的连接

(4)当客户端要取消连接时,需要先调用pConnectionPoint->Unadvise(dwCookie)

 

=====================================================================================================

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

可连接点对象及示例(一) 的相关文章

  • 将值添加到对象类型c#

    我有这样的对象 object rt new page 1 现在我如何向该对象添加新值 我的意思是这样的 rt code 5 这怎么可能呢 听起来更像是你想要一个Dictionary
  • 使用 equals 方法比较两个对象,Java

    我有一个对象数组 我想将它们与目标对象进行比较 我想返回与目标对象完全匹配的对象的数量 这是我的计数方法 public int countMatchingGhosts Ghost target int count 0 for int i 0
  • 无法实例化类对象的类型 (Java)

    这是我收到错误的代码 在 new 之后的第二个 Killer 处 String classes new String 5 kills 0 Brian Moser kills 1 James Doakes kills 2 Lila Tourn
  • 如何为有时异步的操作创建和实现接口

    假设我有数百个类 它们使用 计算 方法实现公共接口 一些类将执行异步 例如读取文件 而实现相同接口的其他类将执行同步代码 例如将两个数字相加 为了维护和性能 对此进行编码的好方法是什么 到目前为止我读到的帖子总是建议将异步 等待方法冒泡给调
  • C++dynamic_cast vs 在静态枚举中存储对象类型?

    我正在为一个框架开发一个大的类层次结构 完成后将需要大量的类型转换 我的问题是 放入一个使用枚举来存储层次结构中所有对象类型的静态成员是多么愚蠢的想法 让每个类的成员都是静态的不会增加实例化对象的大小 并且会提供一种 可能 比dynamic
  • 已删除的类实例上的方法仍然有效吗?

    我在 Visual C 2010 上有这段代码 include
  • C++ 用纯虚方法重写纯虚方法

    用另一个纯虚拟方法覆盖一个纯虚拟方法是否有意义 是否存在任何功能差异或代码风格原因使您更喜欢以下选项之一而不是另一个 class Interface public virtual int method 0 class Abstract pu
  • OOP 中的对象和结构有什么区别?

    对象与结构体有何区别 我们何时以及为何使用对象而不是结构体 数组与两者有何不同 何时以及为何使用数组而不是对象或结构 我想了解每个的用途 显然 您可以根据您的编程风格模糊这些区别 但通常结构是结构化的数据块 对象是可以执行某种任务的主权实体
  • 如何在应用程序目录层次结构中构建接口?

    将它们全部放在一个单独的文件夹结构中还是与实现它们的类一起放置 切勿将接口与实现它们的类放在一起 除非这些类满足以下要求 这样做将引入一个紧耦合在接口和实现者之间 如果不同时引用实现者 您将无法创建该接口的其他实现 你基本上有两个选择 将接
  • 如何从另一个 Excel 实例引用工作簿

    我相信我的问题相当简单 我有一个工作簿 我正在使用它从另一个软件 SAP 获取一些数据 当我从软件导出数据时 它会自动打开一个 xlsx 文件 然后我需要做的是从该文件复制一些数据 粘贴到我的原始工作簿上 然后关闭该文件 我的代码中给我带来
  • 创建指向类对象的指针数组

    问题 创建一个至少包含四个指向 Reader 对象的指针的数组 使用 New 运算符创建至少四个指向派生类对象的指针并将它们分配给数组 我不确定我做对了还是错了 Reader 是基类 John David Daniel Mark 是派生类
  • Django“模型”对象不可迭代

    我有一张表 其中显示了已注册的员工 我想根据他们的数据库生成一个简单的 HTML 页面 其中包括他们的姓名 id 职称等 为此 我将一个 id 传递给视图 以便它可以获取相应用户的详细信息并向我显示 一切正常 直到出现错误对象不可迭代 下面
  • Java - ZUI(可缩放用户界面)

    我目前正在做一个小型个人项目 需要显示极其大量的数据 我突然想到实现一种可缩放的用户界面 以允许用户在大量数据中导航 我知道现有的项目 例如ZVTM http zvtm sourceforge net and 短笛2d https code
  • JS如何获取多维数组的最大深度?

    我有一个多维数组 我想知道它的最大深度 我发现了这个灵魂 但它不适用于对象数组 const getArrayDepth arr gt return Array isArray arr 1 Math max arr map getArrayD
  • 枚举

    我试图拥有一组扩展通用接口的枚举 例如 interface Fooable void someCommonMethod enum E1 implements Fooable some enumuerations and a definiti
  • 统一;随机物体移动[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在制作一款机器人战斗游戏 我希望敌人随机移动 然后有时会向敌人移动 我希望运动包含在其中的代码 else if avoid fal
  • javascript:检查对象是否具有特定元素或属性的最佳方法?

    假设我有这个 var person name John Doe email email protected cdn cgi l email protection 该对象只有两个元素 称为name and email 有些人还有一个要素age
  • 使用变量“name”不适用于 JS 对象

    该行为可以在这个小片段中看到 将其作为全局脚本执行 var name name FirstName Tom alert name FirstName 警报产生undefined在 Chrome 中 但在 IE 和 Firefox 中工作 当
  • 如何在 Java 中复制对象?

    考虑下面的代码 DummyBean dum new DummyBean dum setDummy foo System out println dum getDummy prints foo DummyBean dumtwo dum Sys
  • C#中如何将委托转换为对象?

    我正在使用反射类来调用其他 dll 上的一些方法 方法的参数之一是委托类型 我想通过使用反射来调用这个方法 所以我需要将函数参数作为对象数组传递 但我找不到任何关于 如何将委托转换为对象 提前致谢 委托是一个对象 只需像平常一样创建预期的委

随机推荐

  • git上传文件到github

    1 到项目目录 git init 初始化 2 添加文件 git add 3 添加文件 git commit m 注释 4 建立远程分支 git remote add origin xxxxx 提交的github远程地址 5 因为第一次提交
  • 基于规则指导的知识图谱推理协作代理学习(2019)7.27+7.28+7.29

    基于规则指导的知识图谱推理协作代理学习 摘要 介绍 问题和准备工作 问题公式 基于符号的方法 基于游走的方法 RuleGuider 模型架构 关系代理 实体代理 policy Network 策略网络 模型学习 奖励设计 训练过程 实验 实
  • 聘用合同与劳动合同的关系

    http wenku baidu com link url GQlj5z85NRaaqsalF 9H YBTFlX811GT JlLs4tbbNppkSR5hTgyIqxhFqEuyf69yiCdEHnPv iruKDNulrLO76C5c
  • WORD文档损坏修复方法

    一 文档格式法 这种方法是将损坏的WORD文档转换为另一种格式 然后再将它转换回WORD文档格式 这是最简单和最彻底的文档恢复方法 所以如果遇到显示混乱的情况 推荐首先使用这种方法 步骤如下 在WORD中打开损坏的文档 选择 文件 另存为
  • 5000字博文带你入门python零基础-------初识Python

    Hello 大家好 我是一名五年级小学生 你们可能已经从孤寒者哪里听说过我了 他的文章写得非常nice 高质量 为他点赞 那就长话短说 这是我的第一篇博文 如果有什么不好之处 敬请谅解 可以在评论区提意见我都会看的 好 现在进入正题 我们先
  • 翼青春jc09 udx710 改串号教程有没有?

    翼青春jc09 芯片 紫光展锐udx710 改串号的教程有没有 这个问题我也发在一牛网论坛了 有没有能分享一下的 https bbs 16rd com thread 605130 1 1 html
  • 富文本 QTextDocument 解析及相关

    QTextDocument 富文本 QTextDocument textDoc textDoc setIndentWidth 20 缩进 textDoc setHtml text gt htmlText 文本 QTextBlock 文本块
  • docker数据持久化的相关介绍

    数据持久化 一 数据持久化简介 二 data volume介绍 三 Bind mount介绍 四 Docker Manager Volume介绍 五 容器与容器的数据共享 一 数据持久化简介 1 Storage Driver 数据存储 Ce
  • 深度学习环境配置2——windows下的torch=1.2.0环境配置

    深度学习环境配置2 windows下的torch 1 2 0环境配置 注意事项 一 2021 9 11更新 二 2021 7 8更新 学习前言 各个版本pytorch的配置教程 环境内容 环境配置 一 Anaconda安装 1 Anacon
  • 谷歌浏览器如何在不登录的情况下保存书签

    谷歌浏览器Chrome书签同步方法 新方法 打开谷歌浏览器之后ctrl shift o打开书签管理 点击右上角三个小点将书签导出到本地即可
  • Torchtext 0.12+ API构造训练用DataLoader与词向量的Embedding(2)

    torchtext的详细用法请参考上一期 Torchtext 0 12 新版API学习与使用示例 1 构造embedding的思路也很简单 把语料训练成torchtext对应的vocab 然后对于输入的句子 进行如下转换 文本 gt voc
  • 服务器能打开其他网站打不开,为什么有的网页打不开其他能打开(浏览器网页打不开的原因有哪些)...

    不知道小伙伴们 有没有遇到这样的问题 网络明明没问题 QQ等工具也可以正常登陆 就是有一部分网页打不开 打不开一般就俩原因 1 网站服务器出问题了 网页访问不了 2 DNS问题 访问网页 错误代码 DNS PROBE FINISHED NX
  • TypeScrip详解十八:ts中的类型断言

    TypeScript是一种静态类型的编程语言 它允许开发人员在编写代码时指定变量和函数的类型 但是 有时候我们需要在某些情况下告诉编译器某个值的类型 这时候就需要使用类型断言 什么是类型断言 类型断言是告诉编译器一个值的类型的方法 使用类型
  • Vite项目插件

    1 unplugin vue components 自动导入组件 1 1 安装 npm install unplugin vue components D 1 2 自动导入ui库 该插件内置了大多数流行库解析器 Element Plus A
  • QT 的 Graphics View 系统

    这个框架是一个相对成熟的渲染引擎的上层框架 通常也可以会叫做 Scene View 在QT中 GraphicsView是一个与QWdiget系列一点点不一样的系统 这个系统主要由下面几个框架类构成 QGraphicsView QGraphi
  • [Unity][动作]禁用animation功能不让动画进行位移

    在unity 的 asset store 里面下载 的动作 有的时候会产生动画的位移 使得 人物角色的 animator 的 apply root motion 保持 取消勾选的状态 动画播放就不会进行移动了 参考资料 1 Unity 禁用
  • Landsat 8数据介绍

    1 简介 1 1 数据简介 2013年2月11日 美国航空航天局 NASA 成功发射Landsat 8卫星 Landsat 8卫星上携带两个传感器 分别是OLI陆地成像仪 Operational Land Imager 和TIRS热红外传感
  • 【动态更新】弃用deprecated登记

    由于各项目代码更新频率不一致 导致项目中存在已弃用或即将弃用的方法 故在此记录一下 方便查找 以下的时间并非弃用时间 仅代表我发现的时间 SQLAlchemy 2022 04 29更新 警告内容 SADeprecationWarning T
  • SQL注入时?id=1 and 1=1和?id=1 and 1=2的功能

    此文章是记录本人对知识理解的随手笔记 内容不肯定百分百正确 如有错误望指出并谅解 id 1 and 1 1 id 1 and 1 2 id 1 结论 若在GET请求中 id 1 and 1 1和 id 1 and 1 2都没有报错 则是字符
  • 可连接点对象及示例(一)

    转载请标明是引用于 http blog csdn net chenyujing1234 参考书本 EVC高级编程及其应用开发 客户是主动的 而组件是被动的 组件通过自身暴露给客户的接口来监听客户请求 一旦接收到客户请求便宜做出反应 这样的接