?? 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 + -