目前位置: VCer资源中心 >>> VCer论坛 >>> 技术问答

[本帖已阅读1514次 分值2 回复1次] 张贴资源 发回信箱 控制面板

javascipt是不是不支持variant呀,我都可以送出来,就是取不到

提供者:zhanyajun 张贴时间:2005-01-06 17:00:19.0 出处:vcer.net 作者:不祥

javascipt是不是不支持variant呀,我都可以送出来,就是取不到(2005-01-06 17:00:19.0)


zhanyajun


 
级别: VCer小兵
头衔: VCer会员

经验: 30
作品: 2
分会: 华中分会
注册: 2004-08-01 15:49:41.0
登录: 2005-01-11 17:48:26.0

javascipt是不是不支持variant呀,我都可以送出来,就是取不到

用VC开发了一个控件,里面插入了ATL开发的COM组件,控件发出一个事件Object,携带object(自动化组件)

<script language="javascript" for="AxEdi2t1" event="Object(object)">

 alert(object.prop1);

 

  alert(object.subobject.prop1); 

 

  var objArray = object.subobjects2; 

</script>

ATL开发的COM组件有三个属性prop1,简单的long形

                          suboject(另外一个组件,该组件也有一个prop1属性)

                          subojects2(对象数组)

前面两句都执行成功,var objArray = object.subobjects2; 也不报错,并且通过.net设置断点调试该页面,可以看到objArray的值,但是我就是不知道该怎么在javascript中用objArray,怎么用都出错,比如

objArray(1),objArray[1],等等

在控件中我是这样实现的,object是一个自动化组件,有一个subobjects2属性,该属性的类型是variant

STDMETHODIMP CMyObject::get_subobjects2(VARIANT *pVal)

         SAFEARRAYBOUND rgsabound[1];

 rgsabound[0].lLbound = 0;

 rgsabound[0].cElements = 2;

 m_psaArray = SafeArrayCreate(VT_I4,1,rgsabound);

 for(int i=0;i<2;i++)

 {

  SafeArrayPutElement(m_psaArray,(long*)&i,&i);

 }

 

         VARIANT varArray;

 VariantInit(&varArray);

 V_VT(&varArray) = VT_ARRAY | VT_I4;

 V_ARRAY(&varArray) = m_psaArray;

 *pVal = varArray;

 return S_OK;

}

m_psaArray是CMyObject的成员变量,在外面定义 SAFEARRAY* m_psaArray;

希望大侠出手,谢谢!

注:转载文章需注明来源:VCer.net 文章地址:http://vcer.net/3606.html

  如果你觉得VCer.net不错,而且你愿意为VCer.net捐赠一元钱,那么点击后面的捐赠按钮吧:) vcer.net捐赠

[回复该贴] [加入个人书签]

re:javascipt是不是不支持variant呀,我都可以送出来,就是取不到
javascript我没有用过,只用过asp的调用自己写的ATL控件!但是要提醒一点,脚本应该在服务器端运行的

jerry 于 2005-01-11 13:20:58.0 编辑 [回复该贴]