zoukankan      html  css  js  c++  java
  • 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;

     

  • 相关阅读:
    一个Package Load Failed问题的解决方法

    .NET相关的最好东西--全球最新评价
    一年了...
    MSBuild 的简单入门
    开发基于.NET Compact Framework的程序时, 常遇到的问题(2) 为什么在Visual Studio 2003调试程序时不能通过ActiveSync连接PDA
    如何:显示用逗号分隔的项集合(摘自MSDN)
    每日一句(2008.10.8)
    每日一句(2008.10.16)
    男人这辈子
  • 原文地址:https://www.cnblogs.com/zhangyunlin/p/6167887.html
Copyright © 2011-2022 走看看