这个是接口定义语言,那一串长长的是唯一的接口序列号,一般com接口里边用的比较多,可以关注下queryinterface函数了解详细,爪机打字不方便就不细说了

解决方案 »

  1.   

    这个是接口定义语言,那一串长长的是唯一的接口序列号,一般com接口里边用的比较多,可以关注下queryinterface函数了解详细,爪机打字不方便就不细说了
      

  2.   

    定义接口,定义接口类,然后每个都有一些GUID,帮助字符串等信息
      

  3.   

    下面实质上是申明一个类似程序集的东西,如果你用C#调用过该COM组件,你就明白了,C#将其引用之后首先得 using BEGINNINGCOMLib;
      

  4.   

    是COM或者ATL的东西,多看看就懂了,还是先找个COM基础的东西看看吧。如果是ActiveX的话可跳过不看COM,大概知道什么意思就行了。
      

  5.   

    library BEGINNINGCOMLib 

        importlib("stdole32.tlb"); 
        importlib("stdole2.tlb"); 
     
        [ 
            uuid(586CDC7B-09F1-4f44-A110-F0E604AED81E), 
            helpstring("BeginningCOM Lib") 
        ] 
        coclass BeginningCOM 
        { 
            [default] interface IBeginningCOM; 
        }; 
    };1、这是不是在声明一个库,库里面可以包含好多接口?
    2、这段代码是不是把对象类和接口联系起来?
    coclass BeginningCOM 
        { 
            [default] interface IBeginningCOM; 
        };
        不加这段代码,好像也可以正常使用啊。
    3、后半部分代码是不是不是给C++用的,我不加也可以使用这个组件?
      

  6.   

    关键是讲解COM的书,《COM原理和应用》、《COM技术内幕》对idl介绍的不多,
    随便就糊弄过去了,都没详细讲解。msdn,全是E文,压力大啊
      

  7.   


    1.这么理解应该也不算错。
    2.coclass是用来实现接口。一个COM对象是coclass在内存中的一个实例(instance)。注意COM中的class跟C++中的class不是一个东西,虽然COM 的class 的实现通常都是C++ class。
      

  8.   

    这里描述的是类型库信息
    看一下《com计数内幕》第十一章的第3节就知道怎么回事了COM不仅追求C++编译器的中立,而且追求语言的独立性. 因此它使用IDL语言来描述接口. 然后在IDL到具体的语言之间建立映射.
    但是一些数据类型在有些语言中难以表达。比如复杂的结构类型,指针类型,函数指针等等在一些弱类型的高级语言中比如Java, Visual Basic等等并没有得到支持. IDL到这些语言的映射不能顺利地进行. 客户通过接口调用对象时,在编译时刻需要接口的准确的描述, 这个描述正是来自于MIDL对IDL编译后产生的头文件, 而Java, VB等无法使用这种基于C/C++的头文件. COM的语言无关性受到很多的限制。
    因此, MS使用类型库来解决这个问题. 类型库文件是一个二进制文件, 后缀为.tlb.用MIDL工具编译idl文件可以产生类型库文件,在实际的开发过程中不一定要手工使用MIDL工具,IDE对其进行了集成. 编译完成以后,我们可以选择把它随组件库一起分发. 类型库以机器可读的方式描述了组件与外界交互的必要信息. 如COM对象的CLSID, 它支持的接口的IID,接口的成员函数的签名等等. 本质上它等价于描述接口的C/C++头文件.