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,然后把你的浏览器的安全等级调低看看。

    评论

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘