JS调用OCX接口时,只能接收到一个值,但是想接收接口中的多个值,该怎么设计呢?希望能给出点代码。
解决方案 »
- 求助非模态对话框永远最前端设置方法
- 有趣的QQ游戏2012
- 请问一下类似迅雷管理下载的问题
- vc 发送对象问题
- 在mfc中能否加入类似panel的控件,可以像对话框似的,在上面直接放各种控件。
- 擦除背景后按钮移动不能刷新的问题
- 在线程里可以初始化COM库(CoInitialize)吗?
- 怎样由域名得到ip地址?
- vc 运行错误 unhandled exception in packetcapture.exe:0xc0000005:access violation
- 我的硬盘主引导分区损坏!请问如何恢复!
- 请教,界面刷新后如何显示出原来的图画
- 求助!!!!!!MFC程序编译通过,运行时候却报错,是怎么回事???
1、定义一个结构,包含多个值,把结构作为返回值。
2、通过引用参数,也可以返回值。f(int &p)
{
p=25;
}
STDMETHODIMP CZNActiveXATL::MTT(VARIANT* Result) //返回类型:[out][retvar]
{
long result[2];//用于存储*result_count和*ResultArray
result[0] = 12;//
result[1] =21;//
SAFEARRAY *pSa =NULL;//define the pointer to the safearray
VariantInit(Result);//Init
(* Result).vt = VT_I4 | VT_ARRAY;//
(* Result).parray = pSa;
HRESULT hr = SafeArrayAllocDescriptor(1,&pSa);
pSa->cbElements = sizeof(result[0]);//数组元素的大小
pSa->rgsabound[0].cElements = 2;//一行中元素的个数
pSa->rgsabound[0].lLbound = 0;//
SafeArrayAllocData(pSa);
long* pData=NULL;
SafeArrayAccessData(pSa,(void**)&pData);
long l(0),h(0);
SafeArrayGetLBound(pSa,1,&l);////维数索引从1开始
SafeArrayGetUBound(pSa,1,&h);
long Size=h-l+1;
SafeArrayAccessData(pSa,(void**)&pData);
for(long Idx=l;Idx<Size;++Idx){
pData[Idx] = result[Idx];
}
SafeArrayUnaccessData(pSa);
MessageBox(NULL, L"vertify..9.1:N!", L"demo", MB_OK);
return S_OK;
}
JS端调用代码:
var Vresult = CZNActiveXATL.MTT();
var result = new VBArray(Vresult).toArray();//提示缺少VBArray
alert(result[0]);