参考链接:
http://blog.sina.com.cn/s/blog_66ec4d6601016zfl.html
http://blog.csdn.net/win2ks/article/details/2528471
SAFEARRAY 和 CComSafeArray 的使用
VARIANT各种类型:
http://www.powerbasic.com/support/help/pbcc/variant_data_types.htm
一:一维数组
首先
在ATL的接口中要使用
VARIANT*作为参数。
如:
STDMETHODIMP CarrayClass::arraySort(VARIANT* inarr, VARIANT* outarr)
通俗来说VARIANT 是一种特殊变量,几乎可以表示各种变量。由于ATL接口函数中的char*等是单个指针,无法表示数组,所以使用
VARIANT*作为数组参数传入。具体VARIANT的说明不在这里赘述。参见参考链接,写的都很好。
但是
VARIANT是很复杂的,而且容易出错,所以使用的过程中首先转为SAFEARRAY(要包含头文件#include <atlsafe.h>)
。而inarr->parray就是SAFEARRAY类型,所以不用重新定义一个变量。
。而inarr->parray就是SAFEARRAY类型,所以不用重新定义一个变量。
取数据的过程:
1,获得SAFEARRAY的上下坐标,即数组容量