【问题标题】:How to create safearray of POINT?如何创建 POINT 的安全数组?
【发布时间】:2016-02-20 14:36:57
【问题描述】:

对于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,正确的类型是什么?

【问题讨论】:

    标签: winapi com ole-automation


    【解决方案1】:

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

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

    2. 改为创建一个安全的字节数组 (VT_UI1),然后将原始 POINT 字节复制到其中。然后接收方必须根据数据读取字节。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-10
      • 2018-02-01
      • 1970-01-01
      • 2011-07-13
      • 2019-02-04
      • 2020-03-13
      • 2018-07-08
      • 2014-02-23
      相关资源
      最近更新 更多