C++-怎么从一个long型数组构建一个VARIANT结构

C++-怎么从一个long型数组构建一个VARIANT结构

瑾兮 发布于 2017-06-02 字数 87 浏览 1080 回复 2

怎么从一个long型数组构建一个VARIANT结构
给下原理思路 有源码最好 谢谢大牛哈

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

瑾兮 2017-07-27 2 楼

long 数组转Variant

void longArray2Variant(long lData, lon lData1, long lData2, long lData3,VARIANT& va)
{
CComSafeArray<long> arrays(4);
arrays.SetAt(0, lData);
arrays.SetAt(1, lData1);
arrays.SetAt(2, lData2);
arrays.SetAt(3, lData3);

CComVariant src(arrays);

VariantCopy(var, &src);
}

泛泛之交 2017-07-07 1 楼

要搞清楚这个问题首先要明白什么VARIANT类型,这样就很容易的知道如何从一个long型数组构建一个VARIANT结构。
什么是VARIANT类型:
实际上VARIANT也只不过是一个新定义的结构罢了,它的主要成员包括一个联合体及一个变量。该联合体由各种类型的数据成员构成, 而该变量则用来指明联合体中目前起作用的数据类型。我们所关心的接收到的数据就存储在该联合体的某个数据成员中。 该联合体中包含的数据类型很多,从一些简单的变量到非常复杂的数组和指针。
既然VARIANT是一个联合体,那我们从long转换到它就有了基本思路了,我们知道联合体的一个基本特性,实际上就是一个多种类型的泛指,可以当做联合体中的任何类型来处理,最终有编译器来帮我们处理实际的细节,好多脚本语言底层的实现都是利用了联合体的这个特性,在COM中为了接口的兼容性和灵活性也使用了联合体的这个特性,具体实现方式就如@马瑜所实现的,我只说下原理哈。