📄 queryterminalview.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 + -