如何创建POINT的safearray?

时间:2016-02-20 14:36:58

标签: winapi com ole-automation

对于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?

1 个答案:

答案 0 :(得分:2)

POINT不是OLE兼容类型。 VT_RECORD仅适用于在TypeLibrary中定义的自定义类型。你必须要么:

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

  2. 创建一个字节的safearray(VT_UI1),然后将原始的POINT字节复制到其中。然后接收器必须按照读取字节。