📄 pinboardinterfacemanage.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 + -