如何创建 POINT 的安全阵列?

How to create safearray of POINT?

自动化类型有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)的正确类型是什么?

POINT 不是 OLE 兼容类型。 VT_RECORD 仅适用于类型库中定义的自定义类型。您将必须:

  1. 创建一个复制 POINT 的类型库,然后从类型库

  2. 中检索 IRecordInfo
  3. 创建一个安全字节数组 (VT_UI1),然后将原始 POINT 字节复制到其中。然后接收方将必须根据

  4. 读取字节。