?? programlist.cpp
字號:
#include "StdAfx.h"
#include "ProgramList.h"
CProgramList::CProgramList(void)
{
m_pDataFirst=m_pDataSelected=m_pDataLast=m_pCurrentData=NULL;
m_dwDataCount=0;
}
CProgramList::~CProgramList(void)
{
while(m_pDataFirst)
{
m_pCurrentData = m_pDataFirst;
m_pDataFirst = m_pDataFirst->pNext;
if(m_pCurrentData->hProcessIcon)
DestroyIcon(m_pCurrentData->hProcessIcon);
free(m_pCurrentData);
}
m_pDataFirst=m_pDataSelected=m_pDataLast=m_pCurrentData=NULL;
m_dwDataCount = 0;
}
BOOL CProgramList::AddDataToList(PROGRAMDATA *pData)
{
if(m_pDataFirst)
{
while(m_pCurrentData->pNext)
{
m_pCurrentData = m_pCurrentData->pNext;
}
m_pCurrentData->pNext = pData;
pData->pPrev = m_pCurrentData;
pData->pNext = NULL;
m_pDataLast = pData;
}
else
{
pData->pNext=pData->pPrev=NULL;
m_pDataFirst=m_pDataLast=m_pCurrentData=pData;
}
m_dwDataCount++;
return TRUE;
}
BOOL CProgramList::RemoveDataFromList(DWORD dwID,BOOL bSpecialId)
{
PROGRAMDATA *pTemp;
if(bSpecialId)
{
pTemp = m_pDataFirst;
while(pTemp)
{
if(pTemp->dwProcessId == dwID)
{
m_pDataSelected = pTemp;
break;
}
pTemp = pTemp->pNext;
}
}
else
{
int i=0;
pTemp = m_pDataFirst;
while(pTemp)
{
if(i == dwID)
{
m_pDataSelected = pTemp;
break;
}
pTemp = pTemp->pNext;
i++;
}
}
if(m_pDataSelected)
{
if(m_pDataSelected->pPrev)
{
if(m_pDataSelected->pNext)
{
//remove middle node :data<-removedata->data
m_pDataSelected->pPrev->pNext = m_pDataSelected->pNext;
m_pDataSelected->pNext->pPrev = m_pDataSelected->pPrev;
}
else
{
//remove tail node : data<-removedata
m_pDataSelected->pPrev->pNext=NULL;
m_pDataLast = m_pDataSelected->pPrev;
}
}
else
{
if(m_pDataSelected->pNext)
{
//remove head node:removedata->data;
m_pDataSelected->pNext->pPrev = NULL;
m_pDataFirst = m_pDataSelected->pNext;
}
else
{
//remove only one node:removedata
free(m_pDataSelected);
m_dwDataCount--;
m_pDataFirst=m_pDataSelected=m_pDataLast=m_pCurrentData=NULL;
return TRUE;
}
}
//free buffer
free(m_pDataSelected);
m_dwDataCount--;
//m_pDataFirst=m_pDataSelected=m_pDataLast=m_pCurrentData=NULL;
}
return TRUE;
}
BOOL CProgramList::UpdateDataToList(DWORD dwID)
{
return TRUE;
}
BOOL CProgramList::DataExistIn(PROGRAMDATA *pData)
{
PROGRAMDATA *pTemp = m_pDataFirst;
while(pTemp)
{
if(lstrcmp(pTemp->szProcessName,pData->szProcessName)==0)
return TRUE;
pTemp = pTemp->pNext;
}
return FALSE;
}
BOOL CProgramList::DataExistIn(LPCTSTR lpszText)
{
PROGRAMDATA *pTemp = m_pDataFirst;
while(pTemp)
{
if(lstrcmp(pTemp->szProcessName,lpszText)==0)
return TRUE;
pTemp = pTemp->pNext;
}
return FALSE;
}
PROGRAMDATA* CProgramList::GetIndexData(int iPos)
{
int i=0;
PROGRAMDATA *pTemp = m_pDataFirst;
while(pTemp)
{
if(i==iPos)
break;
pTemp = pTemp->pNext;
i++;
}
if(pTemp)
return pTemp;
return NULL;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -