VC与javascript混合编程

本文介绍如何通过WebBrowser控件实现在JavaScript中调用VC++函数的方法,包括引入控件、配置类文件、添加接口变量及修改关键函数等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 原理
    VC++函数 <--- COM接口(IDispatch) <--- 控制器(ControlSite) <--- JavaScript

2. 引入WebBrowser控件

3. 引入CMyOccManager、CMyOleControlSite、CMyIDispImp类
  1) 导入MyOleControlSite.cpp、MyOleControlSite.h、MyIDispImp.cpp、MyIDispImp.h文件

4. 在XXXXApp中添加接口变量
  1) 在你的App头文件中,添加一个成员变量:
  public:
  class CMyIDispImp *m_pDispOM;

   2) 在你的App源文件中,增加宏包含
  #include "afxpriv.h"
  #include <../src/occimpl.h>
  #include "MyOleControlSite.h"
                    #include "MyIDispImp.h"

    3) 修改InitInstance()函数——要放最前面
  m_pDispOM = new CMyIDispImp;
  AfxEnableControlContainer(new CMyOccManager);
// AfxEnableControlContainer();

5. 修改GetExternal()函数确定JavaScript调用VC++的路线
  1) 在MyOleControlSite.cpp中,添加头文件引用:
  #include "HtmlCall.h"  // 这个是App头文件

  2) 修改GetExternal()函数
  {
  // return the IDispatch we have for extending the object Model
  IDispatch* pDisp = (IDispatch*)((CHtmlCallApp *)AfxGetApp())->m_pDispOM;
  pDisp->AddRef();
  *ppDispatch = pDisp;

                                           return S_OK;
  }

6. 增加所需函数
  1) 在CXXXXDlg中,声明和实现函数:

  2) CMyIDispImp::GetIDsOfNames()函数中添加一个函数名
 
  3) CMyIDispImp::Invoke()函数中添加一个函数调用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值