2008-05-05 14:17

1.在APP的InitInstance()函数中加入AfxEnableControlContainer();以支持ole控件;

2.在CDHtmlDialog::OnInitDialog()中加入SetExternalDispatch(GetIDispatch(TRUE));

3.通过以下函数实现调用js函数:

BOOL CDHtmlDialog::CallJScript(const CString strFunc, _variant_t* pVarResult)

{

CStringArray paramArray;

return CallJScript(strFunc,paramArray,pVarResult);

}

BOOL CDHtmlDialog::CallJScript(const CString strFunc,const CString strArg1,_variant_t* pVarResult)

{

CStringArray paramArray;

paramArray.Add(strArg1);

return CallJScript(strFunc,paramArray,pVarResult);

}

BOOL CDHtmlDialog::CallJScript(const CString strFunc, const CStringArray& paramArray,_variant_t* pVarResult)

{

CComPtr spScript;

if(!GetJScript(spScript))

{

MessageBox("函数GetJScrip调用失败!");

return FALSE;

}

CComBSTR bstrFunc(strFunc);

DISPID dispid = NULL;

HRESULT hr = spScript->GetIDsOfNames(IID_NULL,&bstrFunc,1,

LOCALE_SYSTEM_DEFAULT,&dispid);

if(FAILED(hr))

{

//MessageBox(GetSystemErrorMessage(hr));

return FALSE;

}

INT_PTR arraySize = paramArray.GetSize();

DISPPARAMS dispparams;

memset(&dispparams, 0, sizeof dispparams);

dispparams.cArgs = (UINT)arraySize;

dispparams.rgvarg = new VARIANT[dispparams.cArgs];

for( int i = 0; i < arraySize; i++)

{

CComBSTR bstr = paramArray.GetAt(arraySize - 1 - i); // back reading

bstr.CopyTo(&dispparams.rgvarg[i].bstrVal);

dispparams.rgvarg[i].vt = VT_BSTR;

}

dispparams.cNamedArgs = 0;

EXCEPINFO excepInfo;

memset(&excepInfo, 0, sizeof excepInfo);

_variant_t vaResult;

UINT nArgErr = (UINT)-1;  // initialize to invalid arg

hr = spScript->Invoke(dispid,IID_NULL,0,

DISPATCH_METHOD,&dispparams,&vaResult,&excepInfo,&nArgErr);

delete [] dispparams.rgvarg;

if(FAILED(hr))

{

//MessageBox(GetSystemErrorMessage(hr));

return FALSE;

}

if(pVarResult)

{

*pVarResult = vaResult;

}

return TRUE;

}

BOOL CDHtmlDialog::GetJScript(CComPtr& spDisp)

{

if( m_spHtmlDoc==NULL )

return FALSE;

HRESULT hr = m_spHtmlDoc->get_Script(&spDisp);

ATLASSERT(SUCCEEDED(hr));

return SUCCEEDED(hr);

}

4.调用实例:

CallJScript("alert","test");

html如何调用js的函数返回值,CDHtmlDialog实现调用html中js函数-江湖宵小-搜狐空间...相关推荐

  1. JS(函数返回值、获取非行间样式、函数封装、函数复用、定时器)

    // 函数返回值 // 什么时候需要用:函数外想要使用内部的数据的时候 // 语法: return 返回值 // 1.返回回函数里的值 function fun1 (){ var a = 1; ret ...

  2. python自定义函数返回值_第八讲 python自定义函数返回值

    注意自定义函数:统一文件内函数名称不能相同. 单返回值 语法结构: def function_name([para1,para2...]): code... code... ... return va ...

  3. 6、函数返回值、this、递归及回调函数

    一.函数的返回值 ==> return 1. return将函数内部的值返回到函数外,函数外若想使用,必须要接收该返回值 2. return若不书写或者直接写return,函数的返回值为unde ...

  4. ostream作为函数返回值_Go语言入门必知教程-函数

    函数是为了执行特定任务而存在于程序内的一组语句,函数接受输入并返回输出. 函数允许将常用的代码块提取出来成为单个组件. 使用最广的Go函数是main(),每个独立的Go程序都必须有个main函数. 创 ...

  5. python3主函数返回值_Python 详解基本语法_函数_返回值

    Python 详解基本语法 概要: 函数的返回值是函数重要的组成部分.函数的根本在于实现程序的部分功能,所以很多时候我们需要将函数执行后的结果返回给程序再由程序作出进一步的操作.可以说是函数的返回值令 ...

  6. python函数返回值可以有多个吗_Python函数中如何返回多个值?(代码示例)

    在Python中,我们可以通过多种方法,从一个函数中返回多个值.下面本篇文章就来给大家介绍一下从一个函数中返回多个值的方法,希望对大家有所帮助. 方法一:使用Object 这类似于C / C ++和J ...

  7. isnan函数返回值c语言,C++ std::isnan等函数的使用

    C和C++11标准提供了类似于isnan.isfinite.isinf.isnormal.fpclassify分别用于判断是非数(NaN)值.有限制.无穷值.正常数值等. 今天在使用Modbus读取设 ...

  8. 在python中输入数据使用input、该函数返回值的类型是_python3的input函数默认返回值都是str...

    python3的input函数特性 python3与python2的input的区别 使用注意 引例 pwd_list=['20201234','20201235','20201236'] def a ...

  9. python函数的返回值是返回引用吗_python-函数(上):函数返回值、函数调用、前向引用...

    编程方法: 1.面向对象:类--class 2.面向过程:过程--def 3.函数式编程:函数--def #python中函数#函数的定义#打印一个佛祖镇楼 -> 一个功能点的解释 defpri ...

最新文章

  1. easyui combogrid分页加载默认值时无法自动跳转到相应页的解决方案
  2. 基础-计算机及操作系统和应用程序的概念
  3. 实现一个包含Microsoft.Advertising和SmartMad广告控件的UserControl
  4. EOJ_1020_铁路调度
  5. 2021牛客暑期多校训练营2 J-Product of GCDs(数论+计数)
  6. Java基础——synchronized
  7. 互联网日报 | 6月19日 星期六 | 京东618累计下单金额超3438亿元;爱回收正式登陆纽交所;欧洲杯官方小程序上线支付宝...
  8. 信息学奥赛C++语言: 开关灯1
  9. vue 图片拖拉转放大缩小组件
  10. 徐培成2017大数据Hadoop经典案例-徐培成-专题视频课程
  11. 网页做服务器的监控界面,服务器监控页面
  12. 洛谷 P4578 [FJOI2018] Upc6605 福建OI2018 所罗门王的宝藏
  13. HTML 表单 (form) 的作用解释
  14. Paypal REST API Java 版 PC端商城支付接口对接。
  15. 264.高德地图的使用---驾车出行路线规划(4)
  16. linux编程拼图游戏,cocos2d-x制作拼图游戏
  17. word2013中插入图片显示不全
  18. java方法重写[详解]
  19. HDU 4411 Arrest
  20. java文件传输(JAVA文件传输的好处)

热门文章

  1. mysql+distinct+max_MySQL 中 distinct 和 group by 性能比较-Fun言
  2. 【面试招聘】快手 AI算法岗面试及答案解析
  3. [置顶] mac系统使用指南之色色篇
  4. Neo4j入门-以Movies Project为例
  5. set IDENTITY_INSERT on 和 off 的设置
  6. Android DecimalFormat详解
  7. 文学常识一百条(1)
  8. 产品功能树图_ISO9001:2015标准条款之8.2.2产品和服务要求的确定解析
  9. H5网页判断是否安装APP并调起APP
  10. 透视Linux内核 神奇的BPF二