调用Invoke,传递多个参数,JS中只能弹出一个参数,请大神们帮忙看看

sky-defender 2013-10-14 09:39:53
在JS中定义了如下函数

function printMsg(msg) {
alert(msg);
}


将这个函数注册到了Com组件中,在Com组件中通过Invoke的方法调用这个函数
[code=c]
VARIANTARG v[2];

v[0].vt = VT_I4; v[0].lVal = 2; // 第二个参数,整数2
v[1].vt = VT_I4; v[1].lVal = 1; // 第一个参数,整数1
DISPPARAMS dispParams = { v, NULL, 1, 0 }; // 把参数包装在这个结构中

HRESULT hr = m_spCallback->Invoke(0,
IID_NULL,
LOCALE_USER_DEFAULT,
DISPATCH_METHOD,
&dispParams, NULL, NULL, NULL);


希望看到的现象是:
JS页面弹出两个对话框,显示内容分别是“1”,“2”;但是目前运行结果是只能弹出一个对话框,如果

DISPPARAMS dispParams = { v, NULL, 1, 0 };

中第三个参数cArgs设置为1,则对话框内容显示“2”,如果设置为2,则显示“1”;
因此有疑问:
1,cArgs是决定了在JS端显示的参数,还是决定了Invoke函数要传递的参数?
2,如果想要在JS端通过对话框的方式将这两个参数都显示出来,应该怎么做?应该修改JS端还是Com端
...全文
391 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
sky-defender 2013-10-15
  • 打赏
  • 举报
回复
引用 1 楼 fishion 的回复:
修改下js,把方法修改为两个参数的,然后修改下面的 DISPPARAMS dispParams = { v, NULL, 2, 0 }; // 把参数包装在这个结构中
多谢fishion!
fishion 2013-10-15
  • 打赏
  • 举报
回复
修改下js,把方法修改为两个参数的,然后修改下面的 DISPPARAMS dispParams = { v, NULL, 2, 0 }; // 把参数包装在这个结构中

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧