c++ 封装 ActiveX 插件中,将 VARIANT 变量转化为 Array。

hanyuxinting 2010-11-09 05:34:27
现在在用 c++ 封装 ActiveX 插件中的方法,其中一个接口要返回数据给 JS 调用,插件中方法实现如下:


CComSafeArray<VARIANT> vars;
TCHAR *p = szFiles + ofn.nFileOffset;
while(*p)
{
TCHAR szFileName[MAX_PATH] = {0};
//...
vars.Add(CComVariant(szFileName));
}
CComVariant var(vars);
var.Detach(filelist);



其中,filelist 是返回的数据变量。这个变量在 js 中调用是没有问题的。

目前的问题是:把这个 filelist (VARIANT)变量在 c++ 中实现转换,转换为一个普通的数组。

尝试了 VARIANT 的一些方法,都还没有拿到这个 filelist 的长度及每个item值。

不知有何解?
...全文
157 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hanyuxinting 2010-12-07
  • 打赏
  • 举报
回复
该问题已解决。结贴。
gw_net 2010-11-11
  • 打赏
  • 举报
回复
感觉你用的不对,能否把复现问题的代码发给我,我帮你调一下,改好给你
gw_net@163.com
hanyuxinting 2010-11-10
  • 打赏
  • 举报
回复
调试发现:
CComVariant var(vars);
var.Detach(filelist);

这里的 filelist->vt 是 32992. 。不知道为什么CComVariant 的 Detach 方法会分派给 filelist 这样一个值??

有人对这部分熟悉不?

3,245

社区成员

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

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