[
object,
uuid(24B02EC1-5313-4A69-A701-C347F7C795DD),
dual,
helpstring("Iaaa Interface"),
pointer_default(unique)
]
interface Iaaa : IDispatch
{
//出错
[id(1), helpstring("method Single")] HRESULT Single([in] VARIANT key, [in] VARIANT eType, [out] Ibbb tbbb);
};
[
object,
uuid(53FEEFD5-2744-45C3-987F-829D1CB0AEAD),
dual,
helpstring("Ibbb Interface"),
pointer_default(unique)
]
interface Ibbb : IDispatch
{
[propget, id(1), helpstring("property FieldID")] HRESULT FieldID([out, retval] long *pVal);
};
在出错的位置我的目的是想通过Iaaa返回一个Ibbb,哪个地方需要设置?
另外Iaaa和Ibbb连接的是一个数据库,Iaaa负责定位数据库记录,Ibbb的属性返回数据库当前记录字段,这两个类如何共享连接?Iaaa找到第2条记录的时候,Ibbb如何得知的,需要重新定位吗?

解决方案 »

  1.   

    如果将Ibbb定义为一个Iaaa的一个结构,可不可以,该如何定义?
      

  2.   

    HRESULT Single([in] VARIANT key, [in] VARIANT eType, [out] Ibbb tbbb);应该定义为:
    HRESULT Single([in] VARIANT key, [in] VARIANT eType, [out] Ibbb** tbbb);
      

  3.   

    谢谢,改回来了。具体的Single如何实现?在模块中,*tbbb对应的是哪个类型?bbb还是Ibbb
      

  4.   

    奇怪,为什么不用queryInterface,这样写不符合com的思想
      

  5.   

    把Ibbb的声明移到Iaaa之前Iaaa.
    Ibbb都是接口,一个对象可以拥有多个接口,可以在ClassView对象封装类Caaa上点击右键,在出现的菜单栏上选择Implement Interface,然后选择Ibbb就可以把Iaaa加到Caaa中,两个接口就共享同一个数据库链接了