描述:
新建立一个ATL工程(进程内组件)
建立一个Simple Object对象,支持连接点
添加一个事件OnAdd后实现连接点
添加一个方法Add,实现代码如下:
STDMETHODIMP CCls1::Add()
{
Fire_OnAdd();
return S_OK;
}
然后添加:
public IProvideClassInfo2Impl<&CLSID_Cls1,&DIID__ICls1Events,&LIBID_ATL1Lib>
和:
COM_INTERFACE_ENTRY(IProvideClassInfo)
COM_INTERFACE_ENTRY(IProvideClassInfo2)
编译!注册后,使用脚本:
<object classid="clsid:957D2CC6-6FE0-41F4-90CA-F8F14C66FD65" id=obj></object>
<script language=vbscript>
sub obj_OnAdd()
msgbox "OnAdd"
end sub
call obj.Add()
</script>
经测试脚本中的obj_OnAdd过程未被执行。
换用javascript:
var obj=new ActiveXObject("ATL1.Cls1");
obj. />
{
alert("OnAdd");
}
obj.Add();
运行时提示,对象不支持OnAdd属性或方法!如何解决这个问题啊?
解决方案1:
要支持脚本调用必须实现IDispatch接口
解决方案2:试了一下,确实没反应,我跟的结果是没有建立连接,至于在脚本中怎么写我就不清楚啦。
解决方案3:OnAdd怎么没看见呀!~