📄 senselistctrl.cpp
字号:
// SenseListCtrl.cpp : implementation file
//
#include "stdafx.h"
#include "S180006CAPIExampleComEn.h"
#include "SenseListCtrl.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CSenseListCtrl
#define ITEM_ID_CAPTION "No"
#define ITEM_TAGDATA_CAPTION "Data"
#define ITEM_COUNT_CAPTION "Sum"
#define ITEM_ANTE_CAPTION "Ant"
#define ITEM_TIME_CAPTION "Time"
#define ITEM_EVENT_CAPTION "Event"
#define ITEM_ID_WIDTH 40
#define ITEM_TAGDATA_WIDTH 275
#define ITEM_COUNT_WIDTH 50
#define ITEM_ANTE_WIDTH 45
#define ITEM_TIME_WIDTH 110
#define ITEM_COUNT_MAX 200 //允许最大的记录
bool isShow;
void SenseList_CreateColumn(CListCtrl &m_ListCtrl)
{
LV_COLUMN lvc;
/* CFont m_Font;
m_Font.CreateFont(20,
10,
0,//10,
0,//45,
FW_HEAVY,
0,//TRUE,
0,//TRUE,
0,
DEFAULT_CHARSET,
OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,
DRAFT_QUALITY,
FIXED_PITCH|FF_SWISS,
NULL);//L"myfont");
*/
lvc.mask = LVCF_TEXT|LVCF_WIDTH;
lvc.fmt = LVCFMT_CENTER;
lvc.pszText = _T(ITEM_ID_CAPTION);
lvc.cx = ITEM_ID_WIDTH;
m_ListCtrl.InsertColumn(0,&lvc);
lvc.mask = LVCF_TEXT|LVCF_WIDTH;
lvc.fmt = LVCFMT_CENTER;
lvc.pszText = _T(ITEM_TAGDATA_CAPTION);
lvc.cx = ITEM_TAGDATA_WIDTH;
m_ListCtrl.InsertColumn(1,&lvc);
lvc.pszText = _T(ITEM_COUNT_CAPTION);
lvc.fmt = LVCFMT_RIGHT;
lvc.cx =ITEM_COUNT_WIDTH;
m_ListCtrl.InsertColumn(2,&lvc);
lvc.pszText = _T(ITEM_ANTE_CAPTION);
lvc.fmt = LVCFMT_RIGHT;
lvc.cx = ITEM_ANTE_WIDTH;;
m_ListCtrl.InsertColumn(3,&lvc);
//m_ListCtrl.SetFont(&m_Font);
}
void SenseList_CreateColumnA(CListCtrl &m_ListCtrl,int nColWidth[])
{
LV_COLUMN lvc;
int i = 0;
lvc.mask = LVCF_TEXT|LVCF_WIDTH;
lvc.fmt = LVCFMT_CENTER;
lvc.pszText = _T(ITEM_ID_CAPTION);
lvc.cx = nColWidth[i++];
m_ListCtrl.InsertColumn(0,&lvc);
lvc.mask = LVCF_TEXT|LVCF_WIDTH;
lvc.fmt = LVCFMT_CENTER;
lvc.pszText = _T(ITEM_TAGDATA_CAPTION);
lvc.cx = nColWidth[i++];
m_ListCtrl.InsertColumn(1,&lvc);
lvc.pszText = _T(ITEM_COUNT_CAPTION);
lvc.fmt = LVCFMT_RIGHT;
lvc.cx = nColWidth[i++];
m_ListCtrl.InsertColumn(2,&lvc);
lvc.pszText = _T(ITEM_ANTE_CAPTION);
lvc.fmt = LVCFMT_RIGHT;
lvc.cx = nColWidth[i++];
m_ListCtrl.InsertColumn(3,&lvc);
//m_ListCtrl.SetFont(&m_Font);
}
void SenseList_InsertItem(CListCtrl &m_ListCtrl,LPTSTR TagData,int antennaID)
{
char temp[128];
LVFINDINFO info;
int nIndex;
info.flags = LVFI_PARTIAL|LVFI_STRING;
info.psz = LPCTSTR(TagData);//字符串名
nIndex = m_ListCtrl.FindItem(&info);
nIndex = SenseList_FindItem(m_ListCtrl,CString(TagData),1);
if(nIndex<0)
{
int i=m_ListCtrl.GetItemCount();
if(i>ITEM_COUNT_MAX)
{
m_ListCtrl.DeleteItem(0);
i--;
}
LVITEM lvitem;
lvitem.mask=LVIF_TEXT;
lvitem.iItem=i;
_stprintf(temp, TEXT("%d"),i+1);
lvitem.iSubItem=0;
lvitem.pszText = temp;
m_ListCtrl.InsertItem(&lvitem);
lvitem.iSubItem=1;
lvitem.pszText=TagData;
m_ListCtrl.SetItem(&lvitem);
lvitem.iSubItem=2;
_stprintf(temp, TEXT("%02d"),1);
lvitem.pszText = temp;
m_ListCtrl.SetItem(&lvitem);
lvitem.iSubItem=3;
_stprintf(temp, TEXT("%02d"),antennaID);
lvitem.pszText=temp;
m_ListCtrl.SetItem(&lvitem);
m_ListCtrl.EnsureVisible(i,TRUE);
return;
}
CString sCount;
sCount = m_ListCtrl.GetItemText(nIndex,2);
UINT iCount;
iCount = strtoul(sCount,NULL,10);
_stprintf(temp, TEXT("%02d"),iCount+1);
m_ListCtrl.SetItemText(nIndex,2,temp);
_stprintf(temp, TEXT("%02d"),antennaID);
m_ListCtrl.SetItemText(nIndex,3,temp);
m_ListCtrl.EnsureVisible(nIndex,TRUE);
m_ListCtrl.UpdateWindow();
}
void SenseList_InsertItemAdd(CListCtrl &m_ListCtrl,LPTSTR TagData,int antennaID)
{
char temp[128];
int i=m_ListCtrl.GetItemCount();
if(i>ITEM_COUNT_MAX)
{
m_ListCtrl.DeleteItem(0);
i--;
}
LVITEM lvitem;
lvitem.mask=LVIF_TEXT;
lvitem.iItem=i;
_stprintf(temp, TEXT("%d"),i+1);
lvitem.iSubItem=0;
lvitem.pszText = temp;
m_ListCtrl.InsertItem(&lvitem);
lvitem.iSubItem=1;
lvitem.pszText=TagData;
m_ListCtrl.SetItem(&lvitem);
lvitem.iSubItem=2;
_stprintf(temp, TEXT("%02d"),1);
lvitem.pszText = temp;
m_ListCtrl.SetItem(&lvitem);
lvitem.iSubItem=3;
_stprintf(temp, TEXT("%02d"),antennaID);
lvitem.pszText=temp;
m_ListCtrl.SetItem(&lvitem);
m_ListCtrl.EnsureVisible(i,TRUE);
m_ListCtrl.UpdateWindow();
}
int SenseList_FindItem(CListCtrl &m_ListCtrl, CString strFindText,int nCol)
{
for(int i=0;i<m_ListCtrl.GetItemCount();i++)
{
if (strFindText == m_ListCtrl.GetItemText(i,nCol))
return i;
}
return -1;
}
void SenseList_SetBKColor(CListCtrl &m_ListCtrl,bool& bDefaultColor)
{
if (bDefaultColor)
{
m_ListCtrl.SetTextBkColor(RGB(255, 255, 255));
m_ListCtrl.SetBkColor(RGB(255, 255, 255));
}
else
{
m_ListCtrl.SetTextBkColor(RGB(0, 255, 0));
m_ListCtrl.SetBkColor(RGB(0, 255, 0));
}
bDefaultColor = !bDefaultColor;
}
void SenseinfoList_CreateColumn(CListCtrl *mListCtrl)
{
LVCOLUMN pColumn;
pColumn.mask = LVCF_TEXT|LVCF_WIDTH;
pColumn.fmt = LVCFMT_LEFT;
pColumn.pszText = ITEM_TIME_CAPTION;
pColumn.cx = ITEM_TIME_WIDTH;
pColumn.iSubItem = 0;
mListCtrl->InsertColumn(0,&pColumn);
pColumn.iSubItem = 1;
pColumn.pszText = ITEM_EVENT_CAPTION;
CRect cr;
mListCtrl->GetClientRect(&cr);
pColumn.cx = cr.right- cr.left - ITEM_TIME_WIDTH;
mListCtrl->InsertColumn(1,&pColumn);
}
void SenseinfoList_addItem(CListCtrl *mListCtrl, LPTSTR sMsg)
{
CTime ct = CTime::GetCurrentTime();
CString sTime;
sTime.Format("%02d-%02d %02d:%02d:%02d", ct.GetMonth(), ct.GetDay(),ct.GetHour(),ct.GetMinute(),ct.GetSecond());
int iItemIndex = mListCtrl->GetItemCount();
LVITEM pItem;
pItem.mask = LVIF_TEXT;
pItem.iItem = iItemIndex;
pItem.pszText = sTime.GetBuffer(0);
pItem.iSubItem = 0;
mListCtrl->InsertItem(&pItem);
pItem.pszText = sMsg;
pItem.iSubItem = 1;
mListCtrl->SetItem(&pItem);
mListCtrl->EnsureVisible(iItemIndex,true);
mListCtrl->UpdateWindow();
}
void SenseList_InsertItemAdd1(CListCtrl *m_ListCtrl,LPTSTR TagData,int antennaID)
{
char temp[128];
int i=m_ListCtrl->GetItemCount();
if(i>ITEM_COUNT_MAX)
{
m_ListCtrl->DeleteItem(0);
i--;
}
LVITEM lvitem;
lvitem.mask=LVIF_TEXT;
lvitem.iItem=i;
// lvitem.iImage=0;
_stprintf(temp, TEXT("%d"),i+1);
lvitem.iSubItem=0;
lvitem.pszText = temp;
m_ListCtrl->InsertItem(&lvitem);
lvitem.iSubItem=1;
lvitem.pszText=TagData;
m_ListCtrl->SetItem(&lvitem);
lvitem.iSubItem=2;
_stprintf(temp, TEXT("%02d"),1);
lvitem.pszText = temp;
m_ListCtrl->SetItem(&lvitem);
lvitem.iSubItem=3;
_stprintf(temp, TEXT("%02d"),antennaID);
lvitem.pszText=temp;
m_ListCtrl->SetItem(&lvitem);
m_ListCtrl->EnsureVisible(i,TRUE);
}
CSenseListCtrl::CSenseListCtrl()
{
}
CSenseListCtrl::~CSenseListCtrl()
{
}
BEGIN_MESSAGE_MAP(CSenseListCtrl, CListCtrl)
//{{AFX_MSG_MAP(CSenseListCtrl)
// NOTE - the ClassWizard will add and remove mapping macros here.
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSenseListCtrl message handlers
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -