在开发ActiveX控件中增加事件
MFC中的Class Wizard中提供了增加控件属性,事件,方法,其中增加事件较为难理解,再此详细说明:
1.
MFC提供了两种事件,stock事件和custom事件,当创建一个事件后,MFC的类表中出现了DXEvent接口,在类中的源文件如下:
[default, source] dispinterface _DXEvents;
Source标识原接口,即不是控件本身实现的接口,与MFC提供的DX不一样。
DXEvent事件是由是由容器实现的,容器实现的接口由控件来定义。对每个控件来说,它可以有自己的事件接口,而容器无法预知是控件将使用哪个接口发出通知的。所以在编写事件同时,指定事件的接口并将其标记为原接口。另一方面,接口由谁来定义是无所谓的。
2.
当控件中定义事件后,在对控件进行编程时,该事件便是控件固有的事件了,在控件的事件列表中列出该事件。如给DXEvent定义了Click()事件后,当将控件放入容器中,点击该控件,便自动产生Click函数的处理中。
3.
上面所说的是MFC提供的Stock事件,那如何生成自定义事件(Custom)呢?

上图就是增加自定义事件的External name 是外部名称,当外部容器调用控件方法时,所看到的名称。FireCustom是控件内部的方法名称,在控件内部只要明确什么时候,什么情况下处罚FireCutsom即可。如当时钟的秒数为0时,就可以发生FireCustom()。