描述:
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;
希望大侠出手,谢谢!