• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > ActiveX接口返回VARIANT,VC调用成功,javascript调用异常,为什么?

ActiveX接口返回VARIANT,VC调用成功,javascript调用异常,为什么?

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了javascript activex,activex控件下载,activex控件,activex控件被阻止,activex控件下载xp等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: ActiveX接口返回VARIANT ,VC调用成功,javascript调用异常,为什么?
描述:

ActiveX接口返回VARIANT ,VC调用成功,javascript调用异常,为什么?
我的 ActiveX控件里一个简单接口,返回VARIANT


   VARIANT CMyCtrl::GetSomething()
{
VARIANT myVariant;
int nNum=100;
myVariant.vt =  VT_INT|VT_BYREF;
myVariant.pintVal = &nNum;
return myVariant;
}
在C++里调用,正常:


   VARIANT CMyDlg::OnButton1Clicked()
{
      VARIANT myVariant;
      myVariant=m_myActiveX.GetSomeThing();
      int a=*myVariant.pintVal;}

  在一个.html 页面里,用 javascript 调用,异常:
  

  <SCRIPT LANGUAGE="JScript">
  function TestActiveFun()
  {
   var theResult = Feb16.GetSomeThing();  //报错,IE报错,说“类型不匹配”
  

  是我的ActiveX接口写的不对呢,还是javascript 调用方式不对?
   或者,因为是有指针的缘故么?
   而SAFEARRY里面也有指针啊,
   VARIANT 里面既然可以存SAFEARRAY,
  当把SAFEARRAY 包在VARIANT里面返回的时候,
  不也只返回了内存指针及内存描述么,为什么不会出错?

typedef struct FARSTRUCT tagSAFEARRAY { //SAFEARRAY
  unsigned short cDims;
  unsigned short fFeatures;
  unsigned short cbElements;
  unsigned short cLocks;
  unsigned long handle;
  void HUGEP* pvData;   //内存块指针
  SAFEARRAYBOUND rgsabound[1];
} SAFEARRAY;  //SAFEARRAY 结构

  


解决方案1:


int nNum=100;
VARIANT CMyCtrl::GetSomething()
{
    VARIANT myVariant;
    
    myVariant.vt =     VT_INT|VT_BYREF;
    myVariant.pintVal = &nNum;    
    return myVariant;
}

解决方案2:

Javascript不支持指针,也没有传值的操作,比如VB的ByRef、ByVal。

解决方案3:

用CComVariant效果要好有些。

解决方案4:

你返回了局部变量

解决方案5:

myVariant.intVal = nNum; 
传值吧

解决方案6:

Feb16 是否正确创建对象


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 如何将ActiveX里的数组以Array的形式通过连接点传给javascript
  • 用JavaScript调用ActiveX的函数,如何获取函数的返回值
  • 在JAVASCRIPT中调用ACTIVEX方法时,传递参数的问题
  • javascript调用ActiveX问题
  • javascript响应ActiveX事件的问题
  • javascript能有方法检测到某个activex是否被disable了么
  • 在Javascript中调用activeX的方法为什么老是失败啊???
  • JavaScript无法动态为ATL编写的ActiveX控件添加事件
  • javascript调用ActiveX控件问题!
  • ActiveX与Javascript的问题

相关文章

  • 2017-06-05 高手进来看看,回复有份
  • 2017-06-05 能否用API全局钩子拦截Timer控件的消息呀
  • 2017-06-04 关于使用BHO编写网页木马和弹出窗口拦截的问题
  • 2017-06-04 各位大哥!小弟有一ActiveX控件问题请教!请见问题:
  • 2017-06-04 求助,关于时间的函数
  • 2017-06-04 100分求解,编译的OCX在别的电脑上注册不上,提示找不到指定的模块
  • 2017-06-04 在VC++中建立ATLCOM类,C#继承此类,如何让VC++调用C#那个派生类
  • 2017-06-04 在CodeProject上看的一个例子,不明白高分
  • 2017-06-05 静态库中MALLOC的问题
  • 2017-06-04 我利用MSComm控件写的穿口通讯程序在其他机器不能运行?

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 候捷的《Win32多线程程序设计
    • 调用某个COM组件的方法,其中有一个参数是输出参数,是一个_RecordsetPtr用户获记录集,如果数据记录是空的时后程序当掉了……
    • 在对话框显示出来之后的事件或虚函数是什么?
    • 如何得到指向对话框的指针?
    • 一个奇怪的问题我认为
    • 大家能系统的解释一下COM吗?主要优点及应用在哪?
    • VC调用Delphi的dll的一点儿问题
    • InsideCOM/InsideATL/这两本书那里有电子版可以down?
    • 想hookCreateProcess,200分请教
    • VC中如何调试网页调用自己的COM组件?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有