请教:COM 接口中 VARINAT 参数的问题
需要用 C++ 访问一个ActiveX控件,接口中一个函数的有Variant参数:
DoGo
Named Params = u'nNumberOfAxes, nAxisArray'
Return Type = 'Void'
Argument = 'Integer 2'
Argument = 'Variant'
Function kind = 'Dispatch'
Invoke Kind = 'Function'
Number Optional Params = 0
在VC++ 6.0 中,生成的包装函数的声明是:
void DoGo(short nNumberOfAxes, const VARIANT& nAxisArray);
调用的例子:
const int nSize(3);
short nAxesArray[nSize] = { 0, 1, 2};
COleSafeArray arrAxes;
arrAxes.CreateOneDim(VT_I2,nSize,nAxesArray);
MintController1.DoGo (3, arrAxes);
由于某些原因,不能使用MFC,需要用C++直接调用Invoke,但不清楚VARIANT怎么才能把短整型数组包起来,像下面的尝试,都有问题
short axes[3]={0,1,2};
VARIANTARG v[2];
v[1].iVal = 3;
v[1].vt = VT_I2;
v[0].piVal = axes
v[0].vt = VT_BYREF|VT_I2;
DISPPARAMS params = {v, NULL, 2, 0};
iface->Invoke(dispid, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD,¶ms ,NULL, NULL, NULL);
这个具体该怎么做呢?
谢谢