📄 event.cpp
字号:
#include "Event.h"#include <algorithm>#include <stdio.h>#include "MyAssert.h"using namespace std;
CEvent::CEvent(CEvent *v_Parent): m_Parent(v_Parent){}/* * 函数介绍:析构,从上一级移除自己,下一级则失去事件响应的能力。 * 输入参数:无 * 输出参数:无 * 返回值 :无 */CEvent::~CEvent(){ //从上一级对象移除自己 CEvent *Parent=GetParent(); if(Parent) Parent->Remove(this); //从下一级中移除 list<CEvent *>::iterator Iter; for(Iter=m_ChildList.begin();Iter!=m_ChildList.end();Iter++) { if(*Iter) (*Iter)->SetParent(NULL); }}/* * 函数介绍:设置上一级对象 * 输入参数:无 * 输出参数:无 * 返回值 :无 */void CEvent::SetParent(CEvent *v_Parent){// Assert(v_Parent); if(v_Parent == this) m_Parent = NULL; else m_Parent=v_Parent; if(m_Parent) v_Parent->AddChild(this);}/* * 函数介绍:取得上一级对象 * 输入参数:无 * 输出参数:无 * 返回值 :无 */CEvent * CEvent::GetParent(){ return m_Parent;}/* * 函数介绍:添加下一级对象 * 输入参数:v_Child * 输出参数:无 * 返回值 :无 */void CEvent::AddChild(CEvent *v_Child){ Assert(v_Child); //查找是否已经加入 if(v_Child !=this) { list<CEvent *>::iterator Iter; Iter=find(m_ChildList.begin(),m_ChildList.end(),v_Child); if(Iter == m_ChildList.end()) { //没有找到,加入 m_ChildList.push_back(v_Child); } }}/* * 函数介绍:从下一级对象中移除指定对象 * 输入参数:v_Obj * 输出参数:无 * 返回值 :无 */void CEvent::Remove(CEvent *v_Obj){ Assert(v_Obj); m_ChildList.remove(v_Obj);}/* * 函数介绍:分发消息到下一级对象中 * 输入参数:无 * 输出参数:无 * 返回值 :无 */void CEvent::DispatchEvent(MsgData *v_Data){ Assert(v_Data); //分发给下一级 list<CEvent *>::iterator Iter; for(Iter=m_ChildList.begin();Iter!=m_ChildList.end();Iter++) { if(*Iter) (*Iter)->HandleEvent(v_Data); }}/* * 函数介绍:处理并分发消息 * 输入参数:无 * 输出参数:无 * 返回值 :无 */void CEvent::HandleEvent(MsgData *v_Data){ Assert(v_Data); //自己处理 if(v_Data->m_MsgRecvObj == this) { //自己处理消息 } else { //分发给下一级 DispatchEvent(v_Data); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -