📄 listinfoframe.cpp
字号:
#include "stdafx.h"
#include ".\listinfoframe.h"
#include <afxmt.h> //CMutex
#include <afxdisp.h>
CListInfoFrame::CListInfoFrame(void)
{
m_msgList.RemoveAll();
}
CListInfoFrame::~CListInfoFrame(void)
{
m_msgList.RemoveAll();
}
// 得到数据包数量
long CListInfoFrame::GetCount(void)
{
return m_msgList.GetCount();
}
// 增加一条消息到链表中
long CListInfoFrame::AddInfobody(CInfoFrame & m_pInfobody)
{
BOOL blResult = FALSE;
try
{
long lResult = 0;
CMutex *m_mutex = new CMutex();
blResult = m_mutex->Lock(1000);
if (blResult)
{
m_msgList.AddTail(m_pInfobody);
lResult = m_msgList.GetCount();
m_mutex->Unlock();
}
delete m_mutex;
return lResult;
}
catch(CMemoryException *e )
{
e->Delete();
return -1;
}
}
// 取得一个消息头,并删除该消息
CInfoFrame * CListInfoFrame::GetInfobodyHead(void)
{
BOOL blResult = FALSE;
CInfoFrame *m_msg;
if (m_msgList.GetCount() <= 0 )
return NULL;
else
{
CMutex *m_mutex = new CMutex();
blResult = m_mutex->Lock(2000);
if (blResult)
{
m_msg = &(CInfoFrame)m_msgList.GetHead();
m_msgList.RemoveHead();
m_mutex->Unlock();
}
delete m_mutex;
return m_msg;
}
}
// 通过ID来取得消息体
CInfoFrame * CListInfoFrame::GetInfobodyByID(long lID)
{
CInfoFrame *m_msg;
if (m_msgList.GetCount() <= 0 )
return NULL;
else
{
CMutex *m_mutex = new CMutex();
m_mutex->Lock(2000);
m_msg = &(CInfoFrame)m_msgList.GetAt((POSITION)lID) ;
m_msgList.RemoveAt((POSITION)lID);
m_mutex->Unlock();
delete m_mutex;
return m_msg;
}
}
// 删除所有的消息体
bool CListInfoFrame::RemoveAll(void)
{
m_msgList.RemoveAll();
return true;
}
// 删除指定的消息体
bool CListInfoFrame::RemoveAt(long lID)
{
try
{
if(m_msgList.GetCount() <=0 )
return false;
else
{
if (lID >0 && lID< m_msgList.GetCount())
{
m_msgList.RemoveAt((POSITION)lID);
}
return true;
}
}
catch(CMemoryException *e)
{
e->Delete();
return false;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -