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

📄 senselistctrl.cpp

📁 这是高频RFID读写示例程序,能控制RFID读写器进行读写
💻 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 + -