求助:ocx控件中的variant类型如何用js赋值

从昨天开始搞一个画图的ocx控件,在网页中调用它,通过javascript给它赋值;调用一个控件中一个画图方法AddNewStream()的时候,怎么试都说是有 “类型不匹配”的错误;控件是用C++写的,

这是方法:
[code]

void AddNewStream(short stream_seqid, short stream_showflag, unsigned long stream_color, LPCTSTR stream_name, LPCTSTR stream_unit, double stream_scale, LPCTSTR stream_remark, short m_nPenStyle, short m_nPenWidth, short m_nNumValidDataRT, VARIANT * m_dValueRT)
{
static BYTE parms[] = VTS_I2 VTS_I2 VTS_UI4 VTS_BSTR VTS_BSTR VTS_R8 VTS_BSTR VTS_I2 VTS_I2 VTS_I2 VTS_PVARIANT ;
InvokeHelper(0x3, DISPATCH_METHOD, VT_EMPTY, NULL, parms, stream_seqid, stream_showflag, stream_color, stream_name, stream_unit, stream_scale, stream_remark, m_nPenStyle, m_nPenWidth, m_nNumValidDataRT, m_dValueRT);
}
[/code]


这是人家给的一个调用AddNewStream方法的例子:
[code]

static int bbb=0;
bbb++;

VARIANT var;
VariantInit(&var);
SAFEARRAYBOUND rgsabound[2];



m_vvvv.ClearAllStream();


m_vvvv.SetHorizontalTimeUnit(5,"秒"); //设置横坐标单位及其描述,0显示到年、1显示到月、依次类推

m_vvvv.SetHorizontalX2Time(1); //是否将横坐标转换成时间:1代表转换、0代表不转换

m_vvvv.Set_ChartType(0);//显示棒图或曲线图:1代表曲线图;0代表棒图

int nLength = 10;

rgsabound[0].lLbound=0;
rgsabound[1].lLbound=0;
rgsabound[0].cElements=nLength;
rgsabound[1].cElements=2;
var.vt=VT_R8|VT_ARRAY;
var.parray=SafeArrayCreate(VT_R8,2,rgsabound);



long index[2];
double data;


index[0]=0;
index[1]=0;
data=132.184906; //实际值
SafeArrayPutElement(var.parray, index, &data);
index[0]=0;
index[1]=1;
data=12*60*60+10; //时间
SafeArrayPutElement(var.parray, index, &data);


index[0]=1;
index[1]=0;
data=132.337234; //实际值
SafeArrayPutElement(var.parray, index, &data);
index[0]=1;
index[1]=1;
data=12*60*60+30; //时间
SafeArrayPutElement(var.parray, index, &data);


index[0]=2;
index[1]=0;
data=132.003876; //实际值
SafeArrayPutElement(var.parray, index, &data);
index[0]=2;
index[1]=1;
data=12*60*60+40; //时间
SafeArrayPutElement(var.parray, index, &data);


index[0]=3;
index[1]=0;
data=132.221054; //实际值
SafeArrayPutElement(var.parray, index, &data);
index[0]=3;
index[1]=1;
data=14*60*60+10; //时间
SafeArrayPutElement(var.parray, index, &data);


index[0]=4;
index[1]=0;
data=132.383438; //实际值
SafeArrayPutElement(var.parray, index, &data);
index[0]=4;
index[1]=1;
data=14*60*60+30; //时间
SafeArrayPutElement(var.parray, index, &data);

index[0]=5;
index[1]=0;
data=131.439148; //实际值
SafeArrayPutElement(var.parray, index, &data);
index[0]=5;
index[1]=1;
data=15*60*60+20; //时间
SafeArrayPutElement(var.parray, index, &data);

index[0]=6;
index[1]=0;
data=131.950562; //实际值
SafeArrayPutElement(var.parray, index, &data);
index[0]=6;
index[1]=1;
data=15*60*60+30; //时间
SafeArrayPutElement(var.parray, index, &data);

index[0]=7;
index[1]=0;
data=132.065659; //实际值
SafeArrayPutElement(var.parray, index, &data);
index[0]=7;
index[1]=1;
data=15*60*60+50; //时间
SafeArrayPutElement(var.parray, index, &data);


index[0]=8;
index[1]=0;
data=132.047348; //实际值
SafeArrayPutElement(var.parray, index, &data);
index[0]=8;
index[1]=1;
data=17*60*60+20; //时间
SafeArrayPutElement(var.parray, index, &data);


index[0]=9;
index[1]=0;
data=132.123352; //实际值
SafeArrayPutElement(var.parray, index, &data);
index[0]=9;
index[1]=1;
data=18*60*60+30; //时间
SafeArrayPutElement(var.parray, index, &data);




m_vvvv.AddNewStream(bbb,true,RGB(100+bbb*20,200-bbb*30,30*bbb*50),"GaoXingAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXXXXXXXXXXXXXXXX","GaoXing",bbb,"GaoXing",1,1,10,&var); //添加曲线数据
::SafeArrayDestroyData(var.parray);
::VariantClear(&var);
[/code]

[b][color=red]我自己不懂C++,我现在遇到的问题是该方法的最后一个参数是VARIANT类型的,我怎么用javascript给这个ocx控件中的该方法赋值?[/[/color]b]

请各位不吝赐教!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值