问个问题,关于属性的
我用ATL写的一个activex,加入了一个接口。我要得到里面的一个属性值。
idl中是
[propget, id(1), helpstring("property pResultArray")] HRESULT pResultArray([out, retval] VARIANT *pVal);
cpp中是
STDMETHODIMP CclsDivideCard::get_pResultArray(VARIANT *pVal)
也就是返回的是VARIANT类型的。我想问返回的是一个指针吗?应该是一个VARIANT吧。
只不过用[out, retval]的话就要返回指针。那么这个VARIANT结构应该怎么构造啊?
在堆里还是栈里??我是这么构造的。
VARIANT a;
////
把a赋值,处理
////
*pVal = a;
return S_OK;
大家看看这么构造对吗???
还是应该
VARIANT *b = new VARIANT;
//////
把b指向的VARIANT赋值
//////
pVal = b;
return S_OK;
不知道应该是那种方法??问问大家,希望不吝赐教。
谢谢
另外返回的VARIANT中是一个数组。
数组SAFEARRAY是用SafeArrayCreate构造的,然后返回VARIANT
那么SafeArrayCreate申请的内存能返回回来吗??好像构造函数没有深拷贝吧。