1

对于 oleautomation 类型,有 VT_xxx 类型:

   SAFEARRAYBOUND rgsabound[1];
   rgsabound[0].lLbound = 0;
   rgsabound[0].cElements = m_cPoints;
   psa = SafeArrayCreate(VT_VARIANT, 1, rgsabound);

对于自定义类型,有 IRecordInfo:

SafeArrayCreateEx(VT_RECORD, 1, &rgbounds, pRecInfo);

但是什么是 Windows 系统类型(例如 POINT)的正确类型?

4

1 回答 1

2

POINT不是 OLE 兼容的类型。VT_RECORD仅适用于在 TypeLibrary 中定义的自定义类型。您将不得不:

  1. 创建一个复制POINT然后从 TypeLibrary 中检索IRecordInfo的 TypeLibrary

  2. 而是创建一个字节的安全数组(VT_UI1),然后将原始POINT字节复制到其中。然后接收器将不得不读取相应的字节。

于 2016-02-20T15:51:24.617 回答