拿atl做例子吧,用wizard加入一个atl object,这个新加入的类算一个组件吗?一个组件可以理解成一个dll或者exe吗?
书上说一个组件可以有好几个类,clsid对应的应该是类吧,但是com里面应该是没有类的概念,只有具体语言才有,比如c++.这个类对应的com概念里应该是啥?

解决方案 »

  1.   

    CLSID可以说对应组件 也可以说对应COM类对象 这里的类不等同于C++语言中类概念
    说一个组件可以有几个类大概是说一个可执行模块中可以有多个组件
    或者一个组件的实现可以涉及多个C++类
    總之毋須把組件理解成具體的語言或語法概念
    只要把它看成一個可以實現某些功能並且提供固定接口的的模塊即可
      

  2.   

    一个CoClass就是一个组件类,一个dll可以包含多个CoClass,Com对象就是对应一个CoClass,标识是CLSID,一个CoClass可以从多个接口派生,组件支持的接口不一定就是Colass的父类接口。就说这么多吧。
      

  3.   

    > ... 一个组件可以理解成一个dll或者exe吗?
    --------------------------
    不是, dll / exe 只是发布组件的载体 .
      

  4.   

    那怎么理解一个组件可以包涵多个class阿
      

  5.   

    每个组件就是一个coclassdll只是com组件的载体,所以一个dll可以有多个的coclass
      

  6.   

    能不能这样理解:
    CLSID(1)------(1)COM组件
    COM组件(1)----(1)dll/exe文件
    COM组件(1)----(n)工厂        //不知道是不是这样
    工厂(1)-------(n)服务对象    //不知道是不是这样,好像一般一个工厂只产生一个服务类的对象
    服务对象(1)---(n)接口
    接口(1)-------(n)函数