SAFEARRAY使用方法示例

From: http://blog.csdn.net/absurd/article/details/786822

 

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;

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/406847.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

几台WEB经常宕机,求分析原因

几台WEB服务器经常宕机&#xff0c;平时运行得好好的&#xff0c;负载也都在2以下&#xff0c;偶尔会突然负高上去就宕机&#xff0c;init 6也无法重启成功只能echo b>/proc/sysrq-trigger 硬重启才行,dmesg 没发现硬件方面有问题。从top相关信息来看&#xff0c;每次宕机现…

修复DBR的脚本

当今社会越来越依赖于计算机了&#xff0c;没事之余做了几个修复DBR的脚本(NTFS FAT32 exFAT)&#xff0c;这样有些操作就不用人工去操作了&#xff0c;1、节省时间 2、提高效率 3、降低人工操作的出错率。转载于:https://blog.51cto.com/haobinnan/172341

期待已久的VS2008 SP1 和.NET FRAMEWORK 3.5 SP1都出来了

期待已久的VS2008 SP1 和.NET FRAMEWORK 3.5 SP1都出来了 下载地址 Microsoft Visual Studio 2008 Service Pack 1 (iso) http://www.microsoft.com/downloads/details.aspx?displaylangzh-cn&FamilyID27673c47-b3b5-4c67-bd99-84e525b5ce61 Visual Studio 2008 Team Foun…

VUE3 项目自定义修改网页标题和图标

VUE3中&#xff0c;网页图标默认使用的是VUE自带的一个ico的图标&#xff0c;也是VUE的logo。那么作为我们自己开发的项目&#xff0c;如何自定义修改网页的图标和标题呢&#xff1f;很简单&#xff0c;下面就介绍一下。 1 标题修改 标题修改直接在项目的 /public/index.html…

IAsyncResult接口

#region 程序集 mscorlib.dll, v4.0.0.0 // C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\mscorlib.dll #endregionusing System.Runtime.InteropServices; using System.Threading;namespace System {// 摘要:// 表示异步操作的状…

开博了!

本人&#xff1a;喜素食&#xff0c;甚爱白菜&#xff0c;然RP尚有待提高&#xff0c;常被谓之“鸟人”也&#xff0c;故已“菜鸟”而自居。一日&#xff0c;本“菜鸟”东游&#xff0c;偶遇Linux&#xff0c;色心骤起&#xff0c;欲为课题之所用&#xff0c;然因资质尚浅&…

AES加密算法的详细介绍与实现

AES简介 高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的)。对称加密算法也就是加密和解密用相同的密钥&#xff0c;具体的加密流程如下图&#xff1a; 下面简单介绍下各个部分的作用与意义&#xff1a; 明文…

如何备份 Outlook Express 项

步骤1&#xff1a;将邮件文件复制到备份文件夹<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />步骤A&#xff1a;定位存储文件夹1. 启动Outlook Express。2. 单击“工具”&#xff0c;然后单击“选项”。3. 在“…

VC6获取硬盘序列号、型号、修订版本号

因为要做个读取硬盘参数信息的控件&#xff0c;所以在网上找了不少代码&#xff0c;但是自己作为一个初学者在使用别人代码时&#xff0c;总会发现有各种各样的问题&#xff1a; 1. 需要的头文件未写明 2. 有些定义未给出 3. 代码的开发环境未明&#xff0c;导致编译时出现“…

Android系统服务-WindowManager

WindowManager是Android中一个重要的服务 &#xff08;Service &#xff09;。WindowManager Service 是全局的&#xff0c;是唯一的。它将用户的操作&#xff0c;翻译成为指令&#xff0c;发送给呈现在界面上的各个Window。Activity会将顶级的控件注册到 Window Manager 中&am…

Linux:关于头文件的位置

十足的菜鸟问题&#xff0c;今天终于想通了一点点。 引子&#xff1a;通常在写代码时先要包含一通头文件&#xff0c;这些头文件们在什么地方呢&#xff1f;这个问题起源于课题中需要操作OK6410的PWM寄存器&#xff0c;查了许多文献说需要ioremap()映射&#xff0c;需要包含 a…

理解AES加密解密的使用方法

很多人对于AES加密并不是很了解&#xff0c;导致互相之间进行加密解密困难。 本文用简单的方式来介绍AES在使用上需要的知识&#xff0c;而不涉及内部算法。最后给出例子来帮助理解AES加密解密的使用方法。 AES的麻烦 相比于其他加密&#xff0c;AES加密似乎模式很多&#xf…

C++中,引用作为函数参数

引用作为函数参数 C之所以增加引用类型&#xff0c; 主要是把它作为函数参数&#xff0c;以扩充函数传递数据的功能。 ———————————————————— c&#xff0c;函数传参&#xff1a;(1)将变量名作为实参和形参。这时传给形参的是变量的值&#xff0c;传递是单向…

全排列算法原理和实现

From: http://www.cnblogs.com/nokiaguy/archive/2008/05/11/1191914.html 全排列是将一组数按一定顺序进行排列&#xff0c;如果这组数有n个&#xff0c;那么全排列数为n!个。现以{1, 2, 3, 4, 5}为例说明如何编写全排列的递归算法。1、首先看最后两个数4, 5。 它们的全排列为…

ext笔记

如何创建对象实例:var app function() { var privVar11; return {p1:11, p2:22,init:function(){}};}(); js创建对象的原理:实际上创建了一个匿名函数&#xff08;没有名字的函数&#xff09;&#xff0c;经过解释之后让它立刻运行&#xff08;注意函数后面的()&#xff09;。…

Linux:建立内核代码树

为什么建立内核代码树&#xff1f;菜鸟简单的以为&#xff0c;好比为某户型的房子&#xff08;某个版本的Linux&#xff09;设计门窗&#xff0c;那么当然需要根据该户型房子的具体参数进行设计了&#xff0c;或者说内核模块要基于内核版本或者该版本的内核代码。那么内核的编译…