📄 resmgr.h
字号:
// 资源管理代码
// 作者: Janhail Luo
// 最后整理: 2003-03-03
//////////////////////////////////////////////////////////////////////
#ifndef _RESMGR_H_
#define _RESMGR_H_
#include <string>
#include <list>
#include <map>
using namespace std;
class CResMgr;
// 资源对象的基类
class CResObject
{
friend class CResMgr;
public:
// 构造函数
CResObject();
// 析构函数
virtual ~CResObject();
// 创建一个资源对象
// pResName为需要创建的对象的名字
void CreateObject(const char* pResName);
// 销毁当前的资源对象
void DestroyObject();
// 取得数据指针
void* GetData();
// 取得对象名字
const char* GetName();
protected:
// 创建一个对象的时候,会调用这个函数
// pResName为需要创建的对象的名字
// 返回创建的对象的指针
virtual void* OnCreateObject(const char* pResName) = 0;
// 当销毁当前对象的时候会调用这个函数
virtual void OnDestroyObject();
protected:
void* m_pData; // 保存对象数据的指针
const char* m_pName; // 当前对象的名字
static CResMgr* m_pResMgr; // 对象管理实例的指针
};
// 资源管理类
class CResMgr
{
friend class CResObject;
protected:
// 构造函数
CResMgr();
// 析构函数
~CResMgr();
protected:
// 注册一个对象到使用资源的列表中
// pResObj 是需要注册的对象的指针
// pName 是需要注册的对象的名字
// 如果当前对象已经注册,就把对象加入到使用资源的列表中
// 同时修改对象的数据,使名字和数据指针指向当前资源
// 如果当前对象没有注册,就创建一个对象
// 同时把这个对象加入使用资源的列表中
void RegisterRes(CResObject* pResObj, const char* pName);
// 把已经注册的对象注销
void UnregisterRes(CResObject* pResObj);
// 检查是否已经没有资源对象
// 如果没有资源对象就返回true
// 否则返回false
bool Empty();
protected:
struct SItem
{
void* pData; // 数据指针
list<CResObject*> objList; // 对象列表
};
protected:
map<string, SItem> m_Item; // 资源列表
};
#endif // _RESMGR_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -