MFC Activex与JavaScript的接口交互-阿里云开发者社区

开发者社区> double2li> 正文

MFC Activex与JavaScript的接口交互

简介: MFC Activex与JavaScript的接口交互 在Activex的应用中与网页的JavaScript的交互必不可少,在这里就简单的介绍下。VC 创建的Activex的有两种类型,MFC Activex与ATL Activex, 在VC新建工程的时候选择,这篇文章介绍的是针对MFC Activex的,ATL Activex可以绕过了。
+关注继续查看

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Chrome 开发者工具里的 CSS grid editor
Chrome 开发者工具里的 CSS grid editor
3 0
利用 Chrome 开发者工具自带的 Memory 工具分析 Node.js 应用的内存分配情况
利用 Chrome 开发者工具自带的 Memory 工具分析 Node.js 应用的内存分配情况
3 0
什么是 Time to live TTL
什么是 Time to live TTL
5 0
内容分发网络 CDN 是如何提高网页加载时间的?
内容分发网络 CDN 是如何提高网页加载时间的?
4 0
Chrome 开发者工具 版本 65 新引入的 Overrides
Chrome 开发者工具 版本 65 新引入的 Overrides
4 0
Service Worker 的一个实战例子
Service Worker 的一个实战例子
4 0
Service Worker 概念简介
Service Worker 概念简介
4 0
内容分发网络 - Content Delivery Network 学习笔记
内容分发网络 - Content Delivery Network 学习笔记
4 0
Chrome 90 里更好的字符串处理机制
Chrome 90 里更好的字符串处理机制
4 0
什么是 CDN 边缘服务器 - Edge Server
什么是 CDN 边缘服务器 - Edge Server
4 0
+关注
double2li
一个在IT行业摸爬滚打的老司机
2870
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载