wcf5188 2017-02-22 10:13 采纳率: 0%
浏览 1349
已结题

ocx返回数组,js调用不成功。到底哪里错了

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]); }

帮帮忙,急!!!

  • 写回答

2条回答 默认 最新

  • threenewbee 2017-02-22 14:30
    关注

    如果你在本地客户端测试了你的ocx并且没有问题,那么可能是权限的问题或者是ocx没有加载。先在客户机上注册下你的ocx,然后把你的浏览器的安全等级调低看看。

    评论

报告相同问题?

悬赏问题

  • ¥50 comsol稳态求解器 找不到解,奇异矩阵有1个空方程返回的解不收敛。没有返回所有参数步长;pid控制
  • ¥15 怎么让wx群机器人发送音乐
  • ¥15 fesafe材料库问题
  • ¥35 beats蓝牙耳机怎么查看日志
  • ¥15 Fluent齿轮搅油
  • ¥15 八爪鱼爬数据为什么自己停了
  • ¥15 交替优化波束形成和ris反射角使保密速率最大化
  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功