Posted on 2008-05-21 16:47
RichardHe 阅读(179)
评论(0) 编辑 收藏 引用
事件订阅,subscribeEvent(事件名,Event::subcribe(回调函数);
方法subcribe通过一个Map Container;
typedef std::multimap<Group, Connection> SlotContainer,添加到容器中,
d_slots.insert(std::pair<Group,Connection>(group,c));而在事件触发时,
Event操作()遍历每个订阅事件的函数,代码如下:
for (; iter != end_iter; ++iter)
args.handled |= (*iter->second->d_subscriber)(args);
这样订阅事件的函数都会遍历回调到!
遇见一个CEGUI的设计问题
有的是函数指针,而有的是类型的别名?比如:
typedef bool (*SortCallback)(const ItemEntry* a, const ItemEntry* b);
typedef bool (SlotFunction)(const EventArgs&);//为什么不声明为函数指针呢?
typedef bool(T::*MemberFunctionType)(const EventArgs&);
typedef bool PropertyCallback(Window* window, String& propname, String& propvalue, void* userdata);