⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 event.cpp

📁 跨操作系统的微型中间件
💻 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 + -