一个ATL COM组件返回一个结构数组,在页面中用javascript调用COM组件,并获得数组中每个结构中对象的值,该怎么做呢?
一个ATL COM组件返回一个结构数组,在页面中用javascript调用COM组件,并获得数组中每个结构中对象的值,该怎么做呢?
一个ATL COM组件,组件返回一个自定义结构数组,在h文件中定义如下:
typedef struct _MYCERT_CONTEXT {
DWORD ver;
BSTR name; //或者是CComBSTR name;
} MYCERT_CONTEXT, *PMYCERT_CONTEXT;
实现如下:
STDMETHODIMP CmyCerts::getArray(VARIANT* pvar){
//m_sa在.h文件中定义 CComSafeArray<VARIANT> m_sa;
pCertInfo[0]->ver = 1;
pCertInfo[0]->name = "aaaa";
pCertInfo[1]->ver = 2;
pCertInfo[1]->name = "bbbb";
m_sa.Add(CComVariant(pCertInfo[0]));
m_sa.Add(CComVariant(pCertInfo[1]));
CComVariant var(m_sa);
var.Detach(pvar);
return S_OK;
}
在页面中加入
<object id="myCerts" name="myCerts"
classid="clsid:F8C1139D-1E86-4026-ABDA-094A2DEFDA04">
</object>
javascript代码:
function UpdateList()
{
var i = 0;
var arrayCerts = myCerts.getArray();
//希望能像这样使用返回的数组
for(var i = 0; i < arrayCerts.length ; i++) {
//或者这样也行for(var nCntr = arrayCerts.lbound(1); nCntr <= arrayCerts.ubound(1); nCntr++)
var oOption = document.createElement("OPTION");
oOption.text = arrayCerts[i].name; //
CmyCerts::getArray()的实现可能有问题,不知道该怎么写,请问该怎么做,是不是需要把结构定义写到idl文件中去?
在页面中该如何取得返回的自定义结构数组,如何使用呢?
如果有点COM和javascript的源代码更好,只需要很简单的自定义结构数组传输和调用的例子就好,希望能给点提示,谢谢啦
分不够我再加呃