事件系统无非就是,当这个事件发生时调用一个(些)函数来处理这个事件。

处理函数可能是多种类型的函数:

静态函数/全局函数

类的成员函数

ISlot 是函数对象,接受参数CParam.是处理函数的基类.

CSlotFreeFunction 用来描述静态函数

CSlotMemberFunction 用来描述类的成员函数

CSlotSubscriber 用来提供统一的接口供上层逻辑调用.CEvent 表示事件

啥也不说了,先上图。

事件系统

接着上代码

创建事件,绑定函数

[cpp]
CEvent* m_pEvent = new kzlib::CEvent("test");
m_pEvent->Subscribe(kzlib::CSlotSubscriber(&CPageProject::Ontest,this));
[/cpp]


事件调用

[cpp]
kzlib::CParam args;
(*m_pEvent)(args);
[/cpp]