下面是我从《COM/DCOM编程指南》中摘出来的话:  紧接着关键字coclass的是新组件的名字。关键字coclass有一个与之相关联的属性表,他要求你至少描述uuid属性。正如你所希望的,在uuid属性中的GUID是新组件类的类ID。它与你在系统注册表中用来注册类的GUID,以及你使用MFC建立COM对象是传递给IMPLEMENT_OLECREATE宏的GUID完全相同。
  紧跟在类名字之后列出了前面声明过的该类所支持的接口。应该在这里列出你的组件所输出的每一个接口。
....

解决方案 »

  1.   

    每个 colclass 的 GUID 叫 CLSID,而接口的 GUID 叫 IID。另外,每个 Module 还有一个 LIBID。
      

  2.   

    redfire,我不太明白你的描述,我感觉这段话描述的是只有一个接口,如果有多个接口,我感觉应该是一个组件里有多个coclass(可参见idl或odl),能不能再阐述一下你的理解。
    edyang,每个接口的确有个iid,但每个接口背后都有个实现类,这些实现类在odl或idl的描述中也有个guid,我想这个应该和该接口的iid不同吧。
    纯属概念问题,忘高手赐教,
    另:是否有比较好(易懂)的关于com和com+ (vc)开发的书, 《技术内幕》里的描述我看不懂了。
      

  3.   

    打开你的xxxx_i.c文件看看就知道了
    你说的接口如果都是在一个coclass中定义的,那就只有一个guid,反之就可以有好几个guid
      

  4.   

    一个 coclass 可以包含几个接口,实例如下:
    [
    uuid(7613E90A-7638-48BD-A689-C040558D6D52),
    version(1.0),
    helpstring("MSHTMLHostUIHandler 1.0 Type Library")
    ]
    library MSHTMLHOSTUIHANDLERLib
    {
    importlib("stdole32.tlb");
    importlib("stdole2.tlb"); [
    uuid(1EC0F47E-223A-459D-A393-409150BF4C84),
    helpstring("HostUIHandler Class")
    ]
    coclass HostUIHandler
    {
    [default] interface IHostUIHandler;
    interface IDocHostUIHandler;
    };
    };
      

  5.   

    你每派生一个接口,如果你是使用ClassWizard的话,它就会自动给你生成一个GUID(CLSID),每个都不相同,注册后就可以进行访问了。如果不是多个接口,那么,它怎么知道要访问那个接口呢?