• 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控件调用JS函数---

---ActiveX控件调用JS函数---

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

佚名通过本文主要向大家介绍了c#调用activex控件,vc调用activex控件,java调用activex控件,vc调用c#activex控件,mfc调用activex控件等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: ---ActiveX控件调用JS函数---
描述:

各位大虾,小弟用MFC做了一个ActiveX控件,控件嵌入到JSP页面里使用。
在控件里调用JS函数,但是现在问题是只能调用没有参数的JS函数。
请问怎么样可以调用带参数的JS函数,让ActiveX把参数传递给JS?
请各位大侠不吝赐教,不胜感激!


解决方案1:

  //向js发送信息   
  LRESULT   CFXVTDoc::outputParam(CString   fuctionName,const   CArray<CString>   &params)   
  {   
  extern   IDispatch   *pScript;   
  if(pScript==NULL){   
  return   -1;   
  }   
  CComBSTR   bstrMember(fuctionName);   
    
  DISPID   dispid;   
    
  HRESULT   hr=pScript->GetIDsOfNames(IID_NULL,&bstrMember,1,LOCALE_SYSTEM_DEFAULT,&dispid);   
  if(FAILED(hr)){   
  #ifdef   _DEBUG   
  switch(hr)   
  {   
  case   E_OUTOFMEMORY:   
  MessageBox(NULL,"E_OUTOFMEMORY","outputParam   Err",0);   
  break;   
  case   DISP_E_UNKNOWNNAME:   
  MessageBox(NULL,"DISP_E_UNKNOWNNAME","outputParam   Err",0);   
  break;   
  case   DISP_E_UNKNOWNLCID:   
  MessageBox(NULL,"DISP_E_UNKNOWNLCID","outputParam   Err",0);   
  break;   
  }   
  #endif   
  return   -1;   
  }   
    
  DISPPARAMS   dispparams;   
  memset(&dispparams,   0,   sizeof   dispparams);   
    
  int   paramNum=params.GetCount();   
  VARIANT   *pParams=new   VARIANT[paramNum];   
    
  for(   int   i   =   0;   i<paramNum;   i++)   
  {   
  CComBSTR   bstr   =params.GetAt(i);   //   back   reading   
  bstr.CopyTo(&pParams[i].bstrVal);   
  pParams[i].vt   =   VT_BSTR;   
  }     
    
  dispparams.rgvarg   =   pParams;       
  dispparams.cNamedArgs   =   0;   
  dispparams.cArgs=paramNum;   
    
  EXCEPINFO   excepInfo;   
  memset(&excepInfo,   0,   sizeof   excepInfo);   
  CComVariant   vaResult;   
  UINT   nArgErr   =   (UINT)-1;     //   initialize   to   invalid   arg   
  hr   =   pScript->Invoke(dispid,IID_NULL,0,DISPATCH_METHOD,&dispparams,&vaResult,&excepInfo,&nArgErr);   
  delete   []dispparams.rgvarg;   
  return   1;   
  }

解决方案2:

1.获取js函数接口
  可以在COM组件中定义一个属性用于获取js函数接口. 
.IDL
  IXXInterface:IDispatch{
   [propput, id(4), helpstring("property funDispatch")] HRESULT funDispatch([in] IDispatch* newVal);
 }
.h
   CComPtr<IDispatch> m_pDispatch;
.cpp
   STDMETHODIMP CXXX::put_funDispatch(IDispatch* newVal)
   {
m_pDispatch = newVal;
   }
调用js函数
   .cpp
   HRESULT CXXX::FireJsFunctionk(){
        CComVariant varResult;
        //在这里封装要想传递的参数
CComVariant avarParams[2];
avarParams[0].lVal = 1;   //参数1 
     avarParams[0].vt = VT_UI4; 
        VARIANT Data;
//对Data赋值
     avarParams[1] = Data;        //参数2
DISPPARAMS params = {avarParams, NULL, 2, 0 };
HRESULT hr = 0;
if(m_pDispatch )
         hr = m_pDispatch->Invoke(0,IID_NULL,LOCALE_USER_DEFAULT,DISPATCH_METHOD,
                &params, &varResult, NULL, NULL);
return hr;
   }

解决方案3:

http://bbs.51cto.com/archiver/tid-419100.html


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

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

  • 如何开发一个ActiveX控件,在其中调用另外一个控件
  • ActiveX的调用方法
  • ActiveX和C#的类型转换问题
  • ActiveX调用Js问题
  • 怎样在ActiveX控件里调用DLL急急!
  • ActiveX调用GDI+的问题???
  • javascript调用ActiveX问题
  • ActiveX中调用winpcap,编译通不过。
  • 网页调用activex控件
  • ACTIVEX调用其他dll遇到的问题!

相关文章

  • 2017-06-04 在WindowsDLL中能否调用ActiveX控件(ocx)?怎么用??
  • 2017-06-04 ATL中调用ADO插入的问题,在线等待,直到子夜
  • 2017-06-04 如何用程序判断一个组件是否已经在本机上注册?
  • 2017-06-04 请教高手:如何调用DCOM接口方法
  • 2017-06-05 请指教常规dll和扩展dll之间在使用层面的区别??
  • 2017-06-05 关于屏保密码
  • 2017-06-04 Dmsexe中的0x7c812afb处最可能的异常:MicrosoftC++异常:内存位置0x0012f1bc处的_com_error
  • 2017-06-04 Tab无法聚焦ActiveX控件
  • 2017-06-04 客户端看ocx控件,只能看到叉叉
  • 2017-06-05 请问我如何在窗口画好后在截屏,我原来有钩子,在处理完WM_PAINT消息后截屏,这样对不对???

文章分类

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

最近更新的内容

    • 如何用扩展的动态连接库实现非模式对话框
    • 谁写过ShellExtension啊?我的IExtractIcon和IContextMenu怎么不工作啊?
    • 类导出DLL时的C4273警告
    • 哪里有INSIDEOLE的电子书可以下载?
    • 在动态连接库内封装应用程序框架
    • LoadLibray就应该受歧视吗?
    • mfc中调用c#编写的dll
    • 求深入解析ATL电子版书
    • 紧急呼救——菜鸟问题,请大侠尽快赐教
    • windows2003server调用mssoap组件时出错

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

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