📄 previewpane2.cpp
字号:
// PreviewPane2.cpp : implementation file
//
#include "stdafx.h"
#include "maintain.h"
#include "PreviewPane2.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define CAPT_MAX_HEIGHT 20
#define CAPT_MIN_HEIGHT 20
#define TEXT_BOLD_LEFT 4
#define TEXT_NORM_LEFT 4
#define TEXT_LINE_ONE 4
#define TEXT_LINE_TWO 30
#define TEXT_LINE_THREE 55
#define TEXT_LINE_FOUR 80
#define TEXT_LINE_FIVE 105
extern CWordArray m_ycArray,m_0250ycArray,m_jdycArray,m_jdxjMuxianArray,m_jdxjZhiluArray;
extern CByteArray m_yxArray;
extern int ngyType;//规约类型
char *strLabel[] = {"YC(Dec)","YC(Hex)"};
/////////////////////////////////////////////////////////////////////////////
// CPreviewPane2
IMPLEMENT_DYNCREATE(CPreviewPane2, CView)
CPreviewPane2::CPreviewPane2()
{
m_str1 = "当前操作--";
m_str2 = "文件名称--";
m_str3 = "传送次数--";
m_str4 = "操作结果--";
m_bMax = TRUE;
bShowType = true;
}
CPreviewPane2::~CPreviewPane2()
{
}
BEGIN_MESSAGE_MAP(CPreviewPane2, CView)
//{{AFX_MSG_MAP(CPreviewPane2)
ON_WM_PAINT()
ON_WM_CREATE()
ON_WM_SIZE()
ON_WM_TIMER()
ON_NOTIFY(LVN_COLUMNCLICK, ID_LIST, OnColumnclickList1)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CPreviewPane2 drawing
void CPreviewPane2::OnDraw(CDC* pDC)
{
CDocument* pDoc = GetDocument();
// TODO: add draw code here
}
/////////////////////////////////////////////////////////////////////////////
// CPreviewPane2 diagnostics
#ifdef _DEBUG
void CPreviewPane2::AssertValid() const
{
CView::AssertValid();
}
void CPreviewPane2::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CPreviewPane2 message handlers
void CPreviewPane2::OnPaint()
{
CPaintDC dc(this); // device context for painting
if (m_bMax)
{
CFont *oldFont = dc.SelectObject((CFont*)&m_font);
dc.TextOut(TEXT_NORM_LEFT, TEXT_LINE_TWO, m_str1);
dc.TextOut(TEXT_NORM_LEFT, TEXT_LINE_THREE, m_str2);
dc.TextOut(TEXT_NORM_LEFT, TEXT_LINE_FOUR, m_str3);
dc.TextOut(TEXT_NORM_LEFT, TEXT_LINE_FIVE, m_str4);
dc.SelectObject(oldFont);
}
}
void CPreviewPane2::SetActionExpain(int nIndex, CString str)
{
CString strTemp;
switch(nIndex)
{
case 1://当前操作
strTemp = m_str1.Left(10);
m_str1 = strTemp + str;
break;
case 2://文件名称
strTemp = m_str2.Left(10);
m_str2 = strTemp + str;
break;
case 3://传送次数
strTemp = m_str3.Left(10);
m_str3 = strTemp + str;
break;
case 4://组帧结构
break;
case 5://操作结果
strTemp = m_str4.Left(10);
m_str4 = strTemp + str;
break;
default:
break;
}
Invalidate(true);
}
void CPreviewPane2::ClearList()
{
int nCount = m_list.GetItemCount();
for(int j=0;j<nCount;j++)
for(int i=1;i<6;i++)
m_list.SetItemText(j,i,"");
}
void CPreviewPane2::ShowList(bool bShow)
{
m_list.ShowWindow(bShow?SW_SHOW:SW_HIDE);
}
void CPreviewPane2::AddSOEToList(int wMilliseconds, int wSecond, int wMinute, int wHour, int wDay, int wMonth, int yxno, int yxstatus)
{
int nCount = m_list.GetItemCount();
CString str,strTime;
for(int i=0;i<nCount;i++)
{
if((m_list.GetItemText(i,5)).IsEmpty())
{
if(wMonth)
str.Format("YX%d%s[%d-%d %d:%d:%d.%d]",yxno,yxstatus?"警":"复",wMonth,wDay,wHour,wMinute,wSecond,wMilliseconds);
else
str.Format("YX%d%s[%d %d:%d:%d.%d]",yxno,yxstatus?"警":"复",wDay,wHour,wMinute,wSecond,wMilliseconds);
m_list.SetItemText(i,5,str);
break;
}
}
}
int CPreviewPane2::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
m_list.Create(LVS_REPORT|WS_CHILD,CRect(0,0,0,0),this,ID_LIST);
m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
LVITEM m_lvItem;
LVCOLUMN m_lvCol;
m_lvCol.mask = LVCF_FMT | LVCF_SUBITEM | LVCF_TEXT|LVCF_WIDTH;
m_lvCol.fmt = LVCFMT_LEFT ;
m_lvItem.mask = LVIF_TEXT;
m_lvItem.iSubItem = 0;
m_lvItem.pszText = "";
m_lvCol.pszText = _T("*");
m_lvCol.cx = 30;
m_list.InsertColumn(0,&m_lvCol);
m_lvCol.pszText = strLabel[0];
m_lvCol.cx = 60;
m_list.InsertColumn(1,&m_lvCol);
m_lvCol.pszText = _T("YC-0250");
m_lvCol.cx = 60;
m_list.InsertColumn(2,&m_lvCol);
m_lvCol.pszText = _T("YC-接地");
m_lvCol.cx = 60;
m_list.InsertColumn(3,&m_lvCol);
m_lvCol.pszText = _T("YX");
m_lvCol.cx = 70;
m_list.InsertColumn(4,&m_lvCol);
m_lvCol.pszText = _T("SOE");
m_lvCol.cx = 180;
m_list.InsertColumn(5,&m_lvCol);
CString str;
for(int i=0;i<LISTITEM_COUNT;i++)
{
m_list.InsertItem(i,"");
str.Format("%d",i);
m_list.SetItemText(i,0,str);
}
SetTimer(1,1000,NULL);
memset(&logfont, 0, sizeof logfont);
logfont.lfHeight = 14;
logfont.lfWidth=7;
logfont.lfWeight=FW_NORMAL;
logfont.lfCharSet=DEFAULT_CHARSET;
lstrcpy(logfont.lfFaceName, _T("宋体"));
m_font.CreateFontIndirect(&logfont);
SetFont(&m_font);
return 0;
}
void CPreviewPane2::OnSize(UINT nType, int cx, int cy)
{
CView::OnSize(nType, cx, cy);
CRect rc;
GetClientRect(rc);
m_list.MoveWindow(rc,true);
}
void CPreviewPane2::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
CString str,strTemp;
BYTE tempYx;
char bBuf[8];
if(nIDEvent == 1)
{
int count = m_yxArray.GetSize();
for(int i=0 ; i<count; i++)
{
tempYx = m_yxArray.GetAt(i);
itoa(tempYx,bBuf,2);
str = bBuf;
int bLen = str.GetLength();
switch(bLen)
{
case 1:
str = "0000000"+str;
break;
case 2:
str = "000000"+str;
break;
case 3:
str = "00000"+str;
break;
case 4:
str = "0000"+str;
break;
case 5:
str = "000"+str;
break;
case 6:
str = "00"+str;
break;
case 7:
str = "0"+str;
break;
default:
break;
}
m_list.SetItemText(i,4,str);
}
WORD tempYc;int value;
count = m_ycArray.GetSize();
for(i=0 ; i<count; i++)
{
tempYc = m_ycArray.GetAt(i);
if (bShowType)//10进制
{
if(ngyType == GY_CDT)//CDT
{
if(tempYc&0x0800)//负数
value = ((((~((tempYc)&0x07ff))&0x07ff)+1)&0x07ff)*(-2);
else
value = tempYc*2;
}
else//FDK,0420
{
if(tempYc&0x8000)//负数
value = (tempYc&0x7fff)*(-1);
else
value = tempYc;
}
str.Format("%d",value);
}
else
{
str.Format("%x",tempYc);
str.MakeUpper();
}
m_list.SetItemText(i,1,str);
}
count = m_0250ycArray.GetSize();
for(i=0 ; i<count; i++)
{
tempYc = m_0250ycArray.GetAt(i);
if(tempYc&0x0800)//负数
value = ((((~((tempYc)&0x07ff))&0x07ff)+1)&0x07ff)*(-2);
else
value = tempYc*2;
str.Format("%d",value);
m_list.SetItemText(i,2,str);
}
if(ngyType == GY_JDXJ)//接地巡检仪
{
count = m_jdxjMuxianArray.GetSize();
for(i=0 ; i<count; i++)
{
tempYc = m_jdxjMuxianArray.GetAt(i);
str.Format("%d",tempYc);
m_list.SetItemText(i,3,str);
}
int count2 = m_jdxjZhiluArray.GetSize();
for(i=0 ; i<count2; i++)
{
tempYc = m_jdxjZhiluArray.GetAt(i);
str.Format("%d",tempYc);
m_list.SetItemText(count+i,3,str);
}
}
else
{
count = m_jdycArray.GetSize();
for(i=0 ; i<count; i++)
{
tempYc = m_jdycArray.GetAt(i);
if(tempYc&0x0800)//负数
value = ((((~((tempYc)&0x07ff))&0x07ff)+1)&0x07ff)*(-2);
else
value = tempYc*2;
str.Format("%d",value);
m_list.SetItemText(i,3,str);
}
}
}
CView::OnTimer(nIDEvent);
}
void CPreviewPane2::OnColumnclickList1(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
if(pNMListView->iSubItem == 1)
{
char buf[50];
LVCOLUMN lv;
lv.mask = LVCF_TEXT;
lv.pszText = buf;
lv.cchTextMax = sizeof(buf);
if(m_list.GetColumn(1,&lv))
{
if (strcmp(buf,strLabel[0])==0)
{
lv.pszText = strLabel[1];
bShowType = false;
}
else
{
lv.pszText = strLabel[0];
bShowType = true;
}
m_list.SetColumn(1,&lv);
}
}
*pResult = 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -