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

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

  1. 静态函数/全局函数

  2. 类的成员函数

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

  1. CSlotFreeFunction 用来描述静态函数

  2. CSlotMemberFunction 用来描述类的成员函数

CSlotSubscriber 用来提供统一的接口供上层逻辑调用.

CEvent 表示事件

啥也不说了,先上图。

ClassDiagram.png
事件系统

接着上代码

  • 创建事件,绑定函数

    [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]