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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2011-11-02 DHTMLX Tree JSON添加自定义属性方法
2011-11-02 DHTMLX Tree中文开发指导