1. 直接使用VARIANT变量
a. 定义VARIANT变量
可以直接定义VARIANT类型的变量。
VARIANT val;
b. 初始化VARIANT变量
在使用VARIANT变量之前,一定要初始化。
VariantInit(&val);
c. 设置变量值
设置变量值前如果VARIANT变量中已经有值,先要清除原有数据。
VariantClear(&val);
val.vt = VT_I4; // 设置类型
val.lVal = 10; // 设置变量值
d. 清除VARIANT变量
在使用完VARIANT变量后,要清除变量,否则会发生内存泄漏。
VariantClear(&val);
e. 动态分配VARIANT变量
如果要动态分配VARIANT变量,应该使用标准的COM内存管理函数。
标准COM内存管理函数包括CoTaskMemAlloc、CoTaskMemFree和CoTaskMemRealloc。
VARIANT * pVal;
pVal = (VARIANT *)CoTaskMemAlloc(size_of(VARIANT));
VariantInit(pVal);
pVal->vt = VT_I4;
pVal->lVal = 10;
...
VariantClear(pVal);
CoTaskMemFree(pVal);
2. 通过CComVariant使用VARIANT变量
CComVariant是ATL对于VARIANT的简单包装。通过CComVariant可以更简单的使用VARIANT,而不必担心没有进行初始化或清除。如果没有特殊情况,应该尽量使用CComVariant而不要使用VARIANT。
以下是使用CComVariant的代码实例。
CComVariant Val;
Val.vt = VT_I4;
Val.lVal = 10;
// Val 不必清除
以下是使用CComVariant数组的例子。
CComVariant * pVal;
pVal = new CComVariant[10];
for (int i = 0; i < 10; ++i)
{
pVal[i].vt = VT_I4;
pVal[I].lVal = i + 1;
}
...
delete[] pVal;