COM组件中使用用户自定义数据类型
2002-05-20· ·lostall··COM集中营
(1) 从IUnknown继承的自定义接口
把数据结构直接传送给基于VTable接口的方法,只适用于由MIDL编译生成的proxy/stub DLL调度的接口,不能用于Invoke();(参UserDefinedDataType(1))
a.在一个新的.h文件中定义自定义数据结构.
b.在.idl文件最前面加入这个.h文件,比如:
#include "MyStruct.h"
c.给从IUnknown派生的接口加入使用了自定义数据结构的方法。
d.在客户程序的stadafx.h最下面加入#import指令,如:
#import "../test3.tlb" no_namespace
在生成的.tlh文件中,会自动包含了用户自定义数据结构的定义。
e.在客户程序需要的时侯调用组件接口函数。
整个过程非常简单,与使用一般的自定义数据类型无异。
另外也可以很方便的使用自定义数据结构数组,使用方法如下:
HRESULT Test2([in]int nCount, [in, size_is(nCount)]MyStruct *pStruct)
(2)从IDispatch继承的双接口
对于从IDispatch继承的双接口就不能象方法一那样直接在接口方法里申请自定义类型了,因为双接口必须要用与自动化兼容的类型。所以采用以下的步骤。
(参UserDefinedDataType(2))
a.首先在.idl文件中加入如下几句,定义一个自定义数据类型。
typedef [ uuid(44ABAE