• MFC Activex与JavaScript的接口交互


    MFC Activex与JavaScript的接口交互

    在Activex的应用中与网页的JavaScript的交互必不可少,在这里就简单的介绍下。
    VC 创建的Activex的有两种类型,MFC Activex与ATL Activex, 在VC新建工程的时候选择,这篇文章介绍的是针对MFC Activex的,ATL Activex可以绕过了。
    测试环境:: VC++ 6.0 SP6

    (一) MFC Activex与JavaScript的传递参数、返回值

    在JavaScript调用时Activex方法,可以归分为两种:
    1参数为整型变量,返回为整型变量

    long CActivexCtrl::Func(long i) 
    {
    return 0;
    }


    2 参数为字符串变量,返回为字符串变量

    复制代码
    BSTR CActivexCtrl::Func(LPCTSTR str) 
    {
    CString strResult;
    strResult = "TeastString2 ret";
    return strResult.AllocSysString();
    }
    复制代码


    3 ….其它的调用方式参考上述两种
    4 在JavaScript中变量默认都可以是variant类型,这样我们就可以利用VARIANT传递各种类型的参数,在Activex中,先对variant的变量进行类型转换,再进行调用。当返回结果时,将结果包装成variant类型的变量再返回。(variant与各种类型变量转换,不是本文重点,在这里不进行讲解)

    复制代码
    VARIANT CActivexCtrl::Func(const VARIANT FAR& para1) 
    {
    VARIANT vaResult;
    VariantInit(&vaResult);

    return vaResult;
    }
    复制代码

    (二) MFC Activex异步调用JavaScript事件方法

    1 在MFC Activex中注册回调函数:

    复制代码
    //回调函数测试
    #include <ATLBASE.H>
    extern CComModule _Module;
    #include <ATLCOM.h>

    //回调函数--全局变量
    CComDispatchDriver m_Func1;

    //注册回调函数
    void CActivexCtrl::regfun(LPDISPATCH bstrFun)
    {
    m_Func1 = bstrFun;
    }
    //触发回调函数
    void CActivexCtrl::func_calljs()
    {
    VARIANT varArg[1];
    varArg[0].vt = VT_UINT;
    varArg[0].uintVal = 10;
    m_Func1.InvokeN((DISPID)DISPID_VALUE, varArg, 1);
    }
    复制代码

    2 JavaScript的中注册异步过程:

    复制代码
    //异步回调函数过程
    function callfun(i)
    {
    alert("callback function in js, ret=" + i);
    }
    //注册回调函数
    obj.regfun(callfun);

    from:http://www.cnblogs.com/sding/archive/2012/04/03/2431142.html

  • 相关阅读:
    用户体验
    jsp ini 配置文件
    Highcharts 图表
    简单游戏服务器
    js 数据操作
    jquery 导航
    as3.0 删除子元件
    java float 保留二位小数
    局域网ip
    SWFUpload
  • 原文地址:https://www.cnblogs.com/lidabo/p/2751649.html
Copyright © 2020-2023  润新知