• SAFEARRAY使用方法示例


    SAFEARRAY使用方法示例

     

    SAFEARRAY不是很好用,一些函数不太直观,一不小心就着了它的道。上次学习编写Google桌面插件时就遇到了麻烦,本来应该是vsa.vt = VT_ARRAY | VT_BSTR,结果写成了vsa.vt = VT_ARRAY,让我查了好久才找到原因。这里整理一下,作为备忘。

     

    l         创建

                                long i = 0;

                                VARIANT va = {0};

                                va.vt = VT_BSTR;

                               

                                SAFEARRAYBOUND bounds[1] = {0};

                                bounds[0].cElements = 5;

                                SAFEARRAY* psa = SafeArrayCreate(VT_VARIANT, 1, bounds);

     

    l         存入元素

                                for(i = 0; i < 5; i++)

                                {

                                         va.bstrVal = SysAllocString(L"test");

                                         SafeArrayPutElement(psa, &i, &va);

                                }

     

    l         获取元素

                                for(i = 0; i < 5; i++)

                                {

                                         va.bstrVal = SysAllocString(L"test");

                                         SafeArrayGetElement(psa, &i, &va);

                                         SysFreeString(va.bstrVal);

                                }

     

    l         销毁

                                SafeArrayDestroy(psa);

     

    l         生成VARIANT变量

                                VARIANT vsa = {0};

                                vsa.vt = VT_ARRAY | VT_BSTR;

                                vsa.parray = psa;

     

  • 相关阅读:
    协变与逆变
    反射
    TreeCombo
    使用TreeCombo示例
    Calling R from java using JRI
    [转]相似度计算常用方法综述
    [转]聚类算法KMeans, KMedoids, GMM, Spectral clustering,Ncut
    Learning D3.js with App iLearning D3.js
    [repost ]经典的机器学习方面源代码库
    [转]数据挖掘中所需的概率论与数理统计知识、上
  • 原文地址:https://www.cnblogs.com/zhangyunlin/p/6167887.html
Copyright © 2020-2023  润新知