我想编写一些ATL的ActiveX的控件,在IE里用,
功能例如(javascript调用):var obj = new ActiveXObject("Msxml2.XMLHTTP");
obj.onreadystatechange = DataParse;function DataParse()
{
    if(obj.readyState==4)
    {
        //TODO
     }
}我的问题是怎么样编写这样的Event属性!(例如:onreadystatechange)
能给写一个简单的例子么??谢谢!!

解决方案 »

  1.   

    JScript不支持,考虑用回调函数。你可以自己做一个属性IDispatch*的,然后Js把函数传过来,你在C++里面用Invoke调用,DISPID传0,不用GetIDsOfNames
      

  2.   

    没用过javascript,还得抽时间学学。
    你是想让你的控件触发一个事件,由容器作出处理对吧。如果在VB,VC等容器里,就是响应控件的一个事件,这样可以做,控件实现连接点容器和连接点,并用ATL的连接点代理生成器生成代码,调用生成的函数。在容器(也就是接收器)方,如在BC,VC,VB中,则直接对控件生成相应用事件处理函数就成。
      

  3.   

    首先让你的控件支持connectpoint,在支持的event接口提供onreadystatechange方法,你的jsp可以直接构造obj_onreadystatechange方法的实现了。
      

  4.   

    1、参考http://www.vckbase.com/document/viewdoc/?id=1538,添加连接点2、实现 IProvideClassInfo/IProvideClassInfo2,声明组件为安全,具体方法参考
    http://www3.ccw.com.cn/club/essence/200209/11681.htm
    这里还给出了客户端如何捕获事件的例子
    3、对于使用了多线程触发事件的情况,需要使用ATLCPImplMT.h,并参考
    http://support.microsoft.com/kb/q280512/#kb1