• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 关于《COM技术内幕》的136~137页

关于《COM技术内幕》的136~137页

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了关于《COM技术内幕》的136~137页等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 关于《COM技术内幕》的136~137页
描述:


我正在看《COM技术内幕》,看到136页的《聚合》的时候就看不明白了,136~137页的内容能不能给讲一下啊,
尤其是为什么内部组件需要两个IUnknown接口,用一个不行么??哪位大侠能把关键问题点一下不胜感激。
谢谢!!!
mail: boku999@hotmail.com


解决方案1:

天那 这么简单的东西 小子你多读两遍书吧 很简单

解决方案2:

up 呵呵我也在看这本书

解决方案3:


我是自己用土办法聚合的,没有用到OleClientSite这些接口。
好像没有遇到这个问题。不过我的子组件自己是相对独立的。我的做法是,如果大组件里面嵌套小组件,让他们互相可以相互查询到接口。通常是一个第三方的独立接口。
当小组件要执行某个可能需要环境语义支持的verb的时候,就去查询那个特殊的接口,如果找不到,就执行自己的独立的方法,否则就把第三方接口考虑进来进行执行。
不过,也能够很稳定的工作。

解决方案4:

up

解决方案5:

真的不是不想告诉你,但是由你自己历经百折想清楚,这个过程是你升华自己程序设计能力的重要步骤。
聚合这个问题是很有意思的,你不妨自己试着做一点C++代码实现一下这个模型就会一清二楚,相信你自己,一定可以搞定的。

解决方案6:

楼主考虑一下这个问题:组件A与组件B,组件B有接口IX,IY,IZ。组件A只聚合组件B的IX接口,可是楼主那样的实现,组件A就可以通过聚合的IX接口得到接口IY,IZ,你怎么解决这个问题?

解决方案7:

嘿嘿,这个地方我当初也反复看了N遍,绕来绕去的,不容易理解...
书读百遍,其义自现...
首先你要确信,你是错的...

解决方案8:

举个例子,组件A需要聚合组件B的接口IX,而组件B还实现了接口IY
因为聚合的关系,客户可以通过组件A取得接口IX,那如果按楼主的想法客户又可以通过刚得到的IX指针得到接口IY,根据接口的定义必须满足对称性的,那就是说可以通过IY接口得到组件A的接口,但组件B又没有聚合组件A,所以这显然是错误的。
我也在看这本书,共同学习。

解决方案9:

即使在被聚合的情况下,内部组件自己单独的IUnknown还是有用的,有什么用呢?——就是专门给外部对象控制用的。这时,只有外部对象可以调用内部对象自己的IUnknown接口来实现对内部对象的控制。——这样,客户并不知道也不需要知道聚合这个事实,但问题是外部对象自己必须知道。
否则,如果外部对象也企图调用内部对象的外部IUnknown接口,——即间接地调用外部对象自己的IUnknown接口来控制内部对象的话,就引起了无限递归。

解决方案10:

因为内部组件可能被单独使用,所以他需要一套接口(比如共有IA,IB,IC加上IUnknown)。另外当他被聚合时,外部组件定制了这个组件可以暴露的接口(比如只能暴露IA)。那么当客户得到一个IA接口的时候,他并不知道这个组件是单独还是聚合,在单独时,对IA查询IUnknown得到他的一个IUnknown接口,在聚合时他应该得到另一个IUnknown接口,因为这两个IUnknown接口暴露的是不同的接口集合

解决方案11:

UP


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2017-06-05 DLL中,如何定义全局变量是不共享的?
  • 2017-06-04 高分求教:只知道ocx存放的地点(fullpath,怎么创建对象?
  • 2017-06-05 急!!!求助!!!如何用API结束进程,一定给分
  • 2017-06-05 请高手看一下为什么我设置的时间限制没有用
  • 2017-06-04 200分!(不过不知道怎么给200分)如何用ATL实现类ADO的对象树?比如通过ABC来访问一个对象?
  • 2017-06-05 FreeLibraryDLL处理Webbrowser内存泄露
  • 2017-06-04 如何将内存中内容直接读取到Word控件里显示
  • 2017-06-05 生成的DLL在Debug版本中能够链接,而在Release版本中却不能够链接
  • 2017-06-04 vc6工程转为vc7时链接出错
  • 2017-06-04 关于回调函数

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 怎样把activex挂到网页上,是不是先要打包成cab?
    • 请教连接点事件的参数回传问题
    • 请有经验的高手指点一下,ATL/COM最快上手需多长时间?
    • SetWindowText用法
    • 多线程能节省运行时间吗?
    • 一个问题,各位大虾给点思路
    • 求助OfficeAutoation
    • 奇怪的程序占CPU100%的问题
    • 请问我在combobox里面处理退格健,该怎么判断光标处什么哪个字符之间,怎么删去前一个字符呢?
    • 多线程调用同一全局函数会不会锁死

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有