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

📄 pinboardinterfacemanage.h

📁 VIPSHELL2007客户端代码
💻 H
字号:
#pragma once
#include <list>
#include "Locker.h"
template<class T>
class CPinboardInterfaceManage
{
	typedef struct _tagT
	{
		T* p;
		size_t nId;
	}ITEMS;
	typedef std::list< ITEMS > PINBOARDINTERFACELIST;
	PINBOARDINTERFACELIST m_list;
	size_t m_index;
	CLocker m_Locker;
public:
	CPinboardInterfaceManage()
	{
		m_index = 0;
	}

	~CPinboardInterfaceManage()
	{
	}

public:
	bool Clear()
	{
		CMySingleLock lock(&m_Locker);
		PINBOARDINTERFACELIST::iterator it;
		for( it = m_list.begin(); it != m_list.end(); it++)
		{
			T* p = it->p;
			p->Release();
		}
		m_list.clear();
		return true;
	}
	size_t GetCount()
	{
		CMySingleLock lock(&m_Locker);
		return m_list.size();
	}
	size_t AddItem(const T* p)
	{
		CMySingleLock lock(&m_Locker);
		ITEMS item;
		item.nId = ++m_index;
		item.p = (T*)p;
		item.p->AddRef();
		m_list.push_back(item);
		return m_index;
	}
	T* GetItem(size_t nId)
	{
		CMySingleLock lock(&m_Locker);
		PINBOARDINTERFACELIST::iterator it;
		for( it = m_list.begin(); it != m_list.end(); it++)
		{
			if( it->nId == nId )
				return it->p;
		}
		return NULL;
	}
	T* GetItemByIndex(size_t nIndex)
	{
		CMySingleLock lock(&m_Locker);
		PINBOARDINTERFACELIST::iterator it;
		for( it = m_list.begin(); it != m_list.end(); it++)
		{
			if( nIndex  == 0 )
				return it->p;
			nIndex--;
		}
		return NULL;
	}
	bool DelItem(T* p)
	{
		CMySingleLock lock(&m_Locker);
		PINBOARDINTERFACELIST::iterator it;
		for( it = m_list.begin(); it != m_list.end(); it++)
		{
			if( it->p == p )
			{
				m_list.erase(it);
				p->Release();
				return true;
			}
			
		}
		return false;
	}
	bool DelItem(size_t nId)
	{
		CMySingleLock lock(&m_Locker);
		PINBOARDINTERFACELIST::iterator it;
		for( it = m_list.begin(); it != m_list.end(); it++)
		{
			if( it->nId == nId )
			{
				T* p = it->p;
				m_list.erase(it);
				p->Release();
				return true;
			}
		}
		return false;
	}
};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -