MFC Activex与JavaScript的接口交互
在Activex的应用中与网页的JavaScript的交互必不可少,在这里就简单的介绍下。
VC创建的Activex的有两种类型,MFCActivex与ATLActivex,在VC新建工程的时候选择,这篇文章介绍的是针对MFCActivex的,ATLActivex可以绕过了。
测试环境:: 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);
相关推荐
VitaLemon 2020-10-15
nmgxzm00 2020-11-10
ifconfig 2020-10-14
hhanbj 2020-11-17
zfszhangyuan 2020-11-16
古叶峰 2020-11-16
一个智障 2020-11-15
jipengx 2020-11-12
81427005 2020-11-11
xixixi 2020-11-11
游走的豚鼠君 2020-11-10
苗疆三刀的随手记 2020-11-10
Web卓不凡 2020-11-03
小飞侠V 2020-11-02
帕尼尼 2020-10-30
爱读书的旅行者 2020-10-26
帕尼尼 2020-10-23
杏仁技术站 2020-10-23