看到别人的TLB中有
Alias wireHWND;
  ^_RemotableHandleRecord _RemotableHandle;
  fContext: I4;
  u: __MIDL_IWinTypes_0009;Union __MIDL_IWinTypes_0009;
  hInproc: I4;
  hRemote: I4;Record tagPOINT;
  x: I4;
  y: I4;Alias wireHICON;
  ^_RemotableHandle
的定义,但MSDN中没找到相关资料,忘各位告知一下。Thank You

解决方案 »

  1.   

    [
     // 库块的属性
    ]
    library TypedefLib {
      importlib("stdole2.tlb");  // 自定义结构体
      typedef struct MyPoint {
          long x;
          long y;
      }MYPOINT
      [
      // ISomeInterface的属性
      ]
      interface ISomeInterface : IUnknown {
      ...
      }
    }
      

  2.   

    1.打开IDL文件,定义自己的结构体 //定义一个结点结构体
    typedef
    [
    uuid(A1E19A7C-5A4A-4f4a-B255-59A848D72018),
    helpstring("MyNode")
    ]
    struct NODE
    {
    double dx;
    double dy;
    }TheNode;
    2.定义使用该结构体的接口
    [
    object,
    uuid(50A7A700-5B2A-4F53-852C-3BF36B869984),
    dual,
    helpstring("IMyTest Interface"),
    pointer_default(unique)
    ]
    interface IMyTest : IDispatch
    {
    // 返回一个TheNode结构
    [id(2), helpstring("method funA")] HRESULT funA([out,retval]TheNode* tt);
    };3.使用ATL对象实现此接口
    STDMETHOD(funA)( TheNode *  tt)
    {
    tt->dx = 100;
    tt->dy = 200;
    return S_OK;
    }
    4.客户端VB调用
        Dim MyObj As New MyTest
        Dim nn As TheNode
        
        nn = MyObj.funA
        MsgBox "dx=" & nn.dx & ", dy=" & nn.dy
      

  3.   

    看看下面
    http://topic.csdn.net/t/20021013/23/1093735.html
      

  4.   

    好像要远程调用的话,应该用标准interface来实现,或者自定义散列集。