在开发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
)
呢?
![](https://p-blog.csdn.net/images/p_blog_csdn_net/GZFStudy/de6197ea07744ad585808c8f7db172d9.png)
上图就是增加自定义事件的
External name
是外部名称,当外部容器调用控件方法时,所看到的名称。
FireCustom
是控件内部的方法名称,在控件内部只要明确什么时候,什么情况下处罚
FireCutsom
即可。如当时钟的秒数为
0
时,就可以发生
FireCustom
()。