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

📄 queryterminalview.cpp

📁 提供数据的实时下载和定时下载
💻 CPP
字号:
// QueryTerminalView.cpp : CQueryTerminalView 类的实现
//

#include "stdafx.h"
#include "QueryTerminal.h"
#include "QueryTerminalView.h"
#include "QueryTerminalDoc.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// CQueryTerminalView

IMPLEMENT_DYNCREATE(CQueryTerminalView, CListView)

BEGIN_MESSAGE_MAP(CQueryTerminalView, CListView)
END_MESSAGE_MAP()

// CQueryTerminalView 构造/析构

CQueryTerminalView::CQueryTerminalView()
{
	// TODO: 在此处添加构造代码

}

CQueryTerminalView::~CQueryTerminalView()
{
}

BOOL CQueryTerminalView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: 在此处通过修改 CREATESTRUCT cs 来修改窗口类或
	// 样式

	return CListView::PreCreateWindow(cs);
}

void CQueryTerminalView::OnInitialUpdate()
{
	CListView::OnInitialUpdate();
	
	CListCtrl & lst=(this->GetListCtrl());
	
	DWORD dwStyle = WS_CHILD | LVS_REPORT | LVS_EDITLABELS|WS_VISIBLE|LVS_NOSORTHEADER;//|LVS_EX_GRIDLINES;
	
	::SetWindowLong(lst.m_hWnd, GWL_STYLE, dwStyle); 
	lst.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
		
	lst.InsertColumn(0,"时间",LVCFMT_CENTER,150);	
	lst.InsertColumn(1,"车站名",LVCFMT_LEFT,100);//
	lst.InsertColumn(2,"车次号",LVCFMT_LEFT,100);
	lst.InsertColumn(3,"机车号",LVCFMT_LEFT,100);
	lst.InsertColumn(4,"机车类型",LVCFMT_LEFT,100);
	lst.InsertColumn(5,"公里标",LVCFMT_LEFT,100);
	lst.InsertColumn(6,"换长",LVCFMT_LEFT,100);
	lst.InsertColumn(7,"总重",LVCFMT_LEFT,100);
	lst.InsertColumn(8,"辆数",LVCFMT_LEFT,100);
	lst.InsertColumn(9,"信号机类型",LVCFMT_LEFT,100);
	lst.InsertColumn(10,"信息格式",LVCFMT_LEFT,80);	
}


// CQueryTerminalView 诊断

#ifdef _DEBUG
void CQueryTerminalView::AssertValid() const
{
	CListView::AssertValid();
}

void CQueryTerminalView::Dump(CDumpContext& dc) const
{
	CListView::Dump(dc);
}

CQueryTerminalDoc* CQueryTerminalView::GetDocument() const // 非调试版本是内联的
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CQueryTerminalDoc)));
	return (CQueryTerminalDoc*)m_pDocument;
}
#endif //_DEBUG


// CQueryTerminalView 消息处理程序

void CQueryTerminalView::AddoneRcdMsg(CString strInput)
{
	int nCount = 0;
    CStringArray m_strTokenArray;
	m_strTokenArray.RemoveAll();
	CString resToken;
	int curPos= 0;
	do
	{
		resToken = strInput.Tokenize(",", curPos).Trim();
		if(resToken != "")
		{
			m_strTokenArray.Add(resToken); 
			nCount++;
		}
	} while(resToken != "");

	if(nCount <= 0)
		return;	
	
	CListCtrl & lst=(this->GetListCtrl());

	int nSum = (nCount > 11)?11:nCount;
	int nTotal = lst.GetItemCount();

	CString strText = "";

	lst.InsertItem(nTotal,"");
	for(int i=0;i<nSum;i++)
	{		
		strText = m_strTokenArray.GetAt(i);
		lst.SetItemText(nTotal,i,strText);	
	}
	
}

// 刷新视图内容
void CQueryTerminalView::RefreshViewData(int nSort)
{
	WXCC_RELAMSG* pMsg = NULL;
	int i,nSum;
	CString str;
	CListCtrl & lst=(this->GetListCtrl());
	lst.DeleteAllItems();
	switch(nSort)
	{
	case 0:    //所有的数据
		{
			nSum = theApp.m_WxccMsgList.GetSize();
			for(i=0;i<nSum;i++)
			{
				pMsg = (WXCC_RELAMSG *)theApp.m_WxccMsgList.GetAt(i);
				str = "";
				if(TransDataTostr(pMsg,str))
				{
					AddoneRcdMsg(str);
				}
			}
		}
		break;
	case 1:    //查询的数据
		{			
			nSum = theApp.m_QueryMsgList.GetSize();
			for(i=0;i<nSum;i++)
			{
				pMsg = (WXCC_RELAMSG *)theApp.m_QueryMsgList.GetAt(i);
				str = "";
				if(TransDataTostr(pMsg,str))
				{
					AddoneRcdMsg(str);
				}
			}			
		}
		break;
	default:
		TRACE("未知的视图数据类别!");
		break;
	}	
}

bool CQueryTerminalView::TransDataTostr(WXCC_RELAMSG * pMsg,CString& strText)
{
	if(pMsg == NULL)
		return false;
	
	strText = "";

	CString strTmp = "";
	//时间、车站名、车次号、机车号、机车类型、 公里标、换长、总重、辆数、信号机类型、信息格式
	if(pMsg->nDataTime != 0)
	{
		strTmp = CUtil::GetTimeStr(pMsg->nDataTime);
	}
	else
	{
		strTmp = pMsg->strTime;
	}
	strText += strTmp;

	strTmp   = "," + pMsg->strStnNm;
	strText += strTmp;

	strTmp   = "," + pMsg->strTrainNo;
	strText += strTmp;

	strTmp.Format(",%d",pMsg->nJcNum);
	strText += strTmp;

	strTmp.Format(",%d",pMsg->nJcType);
	strText += strTmp;

	strTmp.Format(",%d",pMsg->nGlb);
	strText += strTmp;

	strTmp.Format(",%7.1f",pMsg->nHc * 0.1);
	strText += strTmp;

	strTmp.Format(",%d",pMsg->nTotalWeight);
	strText += strTmp;

	strTmp.Format(",%d",pMsg->nLs);
	strText += strTmp;

	BYTE nType = 0x7 & pMsg->nSingleSort;
	switch(nType)                 //
	{
	case 0:
		strTmp = ",始发车";
		break;
	case 1:
		strTmp = ",编组站";
		break;
	case 2:
		strTmp = ",出站";
		break;
	case 3:
		strTmp = ",进站";
		break;
	case 4:
		strTmp = ",通过";
		break;
	case 5:
		strTmp = ",预告";
		break;
	case 6:
		strTmp = ",容许";
		break;
	default:
		strTmp = ",未知";
		break;
	}	
	strText += strTmp;

	strTmp = ",未知";
	if(pMsg->nMsgVer == 1)
	{
		strTmp = ",旧版";
	}
	else
	{
		if(pMsg->nMsgVer == 2)
		{
			strTmp = ",新版";
		}
	}	
	strText += strTmp;

	return true;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -