1)當然可以。
  具体操作你可以用VC自帶的OLEVIEWER查看那些實現了多個自定義接口的Com.那個是最好的例子。我有很多東西都是從上面學到的。
2)要使用自定義的數據類型,必須先定義它。比如說你有用一個枚舉的數據類型,先在IDL里面定義.比如:
         typedef [helpstring("fsd")] enum{
                  a=1,
                  b=2,
                  c=3
                  }myenum;
         接下來你就可以使用這個數據類型了。
3)注意包含全局id的頭文件只能包含一次。

解决方案 »

  1.   

    实现了自动化的COM,宿主文件类型为Service(EXE),添加接口函数,把如下结构作为函数参数返回给调用它的客户程序,用什么数据类型呢?
    SafeArray好象成员类型要相同,VARIANT类型行不行? 怎么实现呢?
    struct INFO
    {
    WORD Type;
    BYTE Month;
    BYTE BoardID;
    };
      

  2.   

    这与COM的接口调度(Marshaling)有的书上称为列集)方式有关。
    COM中有三种接口调度方式。缺省方式为标准接口调度,这时接口的方法的参数只能使用COM认可的标准数据类型。
      

  3.   

    MIDL编译器编译你的idl文件之后,生成了5个文件,你说的xxxx.h和xxxx_i.c只是其中的2个。在这些文件中,声明了一些变量,比如你的IID_XXXX,CLSID_XXXX等,因此,这些文件只能被引用一次。而一个.h文件,可能被编译器扫描多遍,因此会产生XXX已定义的编译错误。对于.cpp文件,只扫描一次。