我已经得到了指向一个对象的指针,variant类型的,请问如何使用它?
指针是通过COM中定了一个方法GetA(int i, IDispatch **pResult),它在vb里返回 IDispatch *类型,我赋给一个variant变量了,这个方法本身返回的是一个TestObj对象;请问该如何把variant变量还原成TestObj *,然后使用这个结果呢?
指针是通过COM中定了一个方法GetA(int i, IDispatch **pResult),它在vb里返回 IDispatch *类型,我赋给一个variant变量了,这个方法本身返回的是一个TestObj对象;请问该如何把variant变量还原成TestObj *,然后使用这个结果呢?
xx.GetA(i,obj)
好奇怪啊,我在GetA里面有如下语句
HRESULT GetA(int i, IDispatch **pResult)
{
TestObj *pObj = new TestObj;
*pResult = pObj;
//把 pObj 和pResult显示出起来,都是有值得
MessageBox(...)
....
}var = GetA(1)
在vb里也确实弹出了对话框,显示有值,但是var就是nothing.....
好奇怪啊
是不是不能用new,而应该用CoTaskMemAlloc啊?
dim obj as object
xx.GetA1(i,obj)
我现在想用类似如下的语句
dim obj as object
obj = xx.GetA2(i)
可是总提示:
run-time error '91'
objat variable or with block variable not set
跟踪进去,等号总是返回Empty给obj,请问什么原因呢?
在idl里面,GetA1和GetA2的定义如下,只有第二个参数是不是retval:
[id(1), helpstring("method func1")] HRESULT GetA1([in] int param1, [out] IDispatch **pResult);[id(2), helpstring("method func1")] HRESULT GetA2([in] int param1, [out, retval] IDispatch **pResult);
这个帖子先结贴了
希望你有空能看看我另外一个与这个相关的帖子:
http://topic.csdn.net/u/20080621/18/12a2942c-e119-4b30-9f23-9ee0e07607b8.html?seed=765687266
谢谢你的帮助