<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<OBJECT classid="CLSID:DDC564B5-9337-430D-B441-CA3AE84C961E" id="temp" name="temp" ></OBJECT>
<script language="JavaScript">
//
function Start()
{
temp.add(10,10);
}
function showResult(x)
{
alert(x);
}
</script>
<input type="button" value="click" οnclick="Start()">
</BODY>
</HTML>
1、通过VBSCRIPT与连接点建立连接,并通过VBSCRIPT重载ACTIVEX中的EVENT事件进行调用;(现在JAVASCRIPT是脚本主流,这种方式会造成代码可读性差,所以不建议使用;)
<!--
//vbScript 通过连接点调用
<SCRIPT ID=clientEventHandlersVBS LANGUAGE=vbscript>
Sub temp_result(y) //temp为OBJECT对象名称 result为ATL/ocx的连接点事件名称;
call showResult(y)
End Sub
</SCRIPT>
-->
2、通过javascript第一种方式重载连接点事件,建立连接;
<!--
//javascript 通过连接点调用 for对应OBJECT,event对应事件接口
<script language="JavaScript" for="temp" event="result(s)">
alert("AddResult(" + s + ")");
</script>
-->
3、通过javascript第二种方式重载连接点事件,建立连接;
temp.attachEvent("result", showReult);
4、通过javascript第三种方式 重载连接点事件,建立连接; ( ATL控件中需使用IDispatchEx定义相应的接口)
function callback(i)
{
WScript.echo(i);
}
var obj = new ActiveXObject("ygsoft.CallBack");
obj.SetCallBack(callback) //注该方法是在ATL控件对象中增加的属性或方法,使javascript方法与vc接口指针建立连接
var para = {"111":"111value","222":"222value"};
obj.Test1(para)//测试C++解析json对象
注: 在ACTIVEX控件中需要继承该接口IProvideClassInfo2Impl否则事件重载不会生效,在使用VS2010建立的ATL项目时,默认是不继承该类的,按向导生成的类也不会包含该类。