ocx控件,里面添加了一个方法返回double数组,js调用ocx接接收数组。代码如下,不知道哪里有问题。请大神帮忙看看
ocx方法代码:没有输入输出参数,返回了一个VARIANT数组
VARIANT CSmoocxCtrl::TESTto(void)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
SAFEARRAY *psa; // 定义psa类型为SAFEARRAY*
SAFEARRAYBOUND rgsabound[1]; // 定义数组的维度
rgsabound[0].lLbound = 0;
rgsabound[0].cElements = 3;
psa = SafeArrayCreate( VT_R8, 1, rgsabound ); // 创建一个SAFEARRAY
double *bstrArray;
SafeArrayAccessData(psa,(void **)&bstrArray);// 并且用SafeArrayAccessData将psa与bstrArray进行绑定
bstrArray[0] = 1000.0;
bstrArray[1] = 5.50;
bstrArray[2] = 2.80;
SafeArrayUnaccessData(psa);
VARIANT vaResult;
VariantInit(&vaResult);
vaResult.vt = VT_ARRAY|VT_R8;
// TODO: 在此添加调度处理程序代码
vaResult.parray = psa;
return vaResult;
}
js调用代码:
测试OCX控件
id="Smoocx"
classid="clsid:CC40D1EF-2EDE-400E-9F85-E292D2805F83"
name= "content"
width=50%
height=210>
function TESTto() { var vba = Smoocx.TESTto(); var jsa = new VBArray(vba).toArray();//使用VBarray读取safearray alert (jsa[3]); }
帮帮忙,急!!!