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

📄 recordinfoview.cpp

📁 保护装置的mbpc软件
💻 CPP
字号:
// RecordInfoView.cpp : implementation file
//

#include "stdafx.h"
#include "mbpc.h"
#include "RecordInfoView.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CRecordInfoView

IMPLEMENT_DYNCREATE(CRecordInfoView, CFormView)

CRecordInfoView::CRecordInfoView()
	: CFormView(CRecordInfoView::IDD)
{
	//{{AFX_DATA_INIT(CRecordInfoView)
	m_nTimerFlag = 0;
	m_szRecord = _T("");
	//}}AFX_DATA_INIT
}

CRecordInfoView::~CRecordInfoView()
{
}

void CRecordInfoView::DoDataExchange(CDataExchange* pDX)
{
	CFormView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CRecordInfoView)
	DDX_Control(pDX, IDC_RECORD, m_ListRecord);
	DDX_Control(pDX, IDC_EDITRECORD, m_EditRecord);
	DDX_Control(pDX, IDC_ALARM, m_ListAlarm);
	DDX_Text(pDX, IDC_EDITRECORD, m_szRecord);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CRecordInfoView, CFormView)
	//{{AFX_MSG_MAP(CRecordInfoView)
	ON_WM_CREATE()
	ON_WM_DESTROY()
	ON_WM_TIMER()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CRecordInfoView diagnostics

#ifdef _DEBUG
void CRecordInfoView::AssertValid() const
{
	CFormView::AssertValid();
}

void CRecordInfoView::Dump(CDumpContext& dc) const
{
	CFormView::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CRecordInfoView message handlers

CMbpcDoc* CRecordInfoView::GetDocument()
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMbpcDoc)));
	return (CMbpcDoc*)m_pDocument;
}

void CRecordInfoView::OnInitialUpdate() 
{
	CFormView::OnInitialUpdate();
	
	// TODO: Add your specialized code here and/or call the base class
	int i;
	m_ListAlarm.DeleteAllItems();
	m_ListRecord.DeleteAllItems();
	for(i = 0; i < 3; i++)
	{
		m_ListRecord.DeleteColumn(0);
		m_ListAlarm.DeleteColumn(0);
	}
	LONG lStyle;
	lStyle = GetWindowLong(m_ListAlarm.m_hWnd, GWL_STYLE);//获取当前窗口style
	lStyle &= ~LVS_TYPEMASK; //清除显示方式位
	lStyle |= LVS_REPORT; //设置style
	SetWindowLong(m_ListAlarm.m_hWnd, GWL_STYLE, lStyle);//设置style
	SetWindowLong(m_ListRecord.m_hWnd, GWL_STYLE, lStyle);//设置style

	DWORD dwStyle = m_ListAlarm.GetExtendedStyle();
	dwStyle |= LVS_EX_FULLROWSELECT;//选中某行使整行高亮(只适用与report风格的listctrl)
	dwStyle |= LVS_EX_GRIDLINES;//网格线(只适用与report风格的listctrl)
	m_ListAlarm.SetExtendedStyle(dwStyle); //设置扩展风格
	m_ListRecord.SetExtendedStyle(dwStyle); //设置扩展风格

	m_ListAlarm.InsertColumn(0, "告警ID", LVCFMT_LEFT, 50);
	m_ListAlarm.InsertColumn(1, "告警名称", LVCFMT_LEFT, 100);
	m_ListAlarm.InsertColumn(2, "状态", LVCFMT_LEFT, 40);

	m_ListRecord.InsertColumn(0, "纪录ID", LVCFMT_LEFT, 50);
	m_ListRecord.InsertColumn(1, "纪录名称", LVCFMT_LEFT, 100);
	m_ListRecord.InsertColumn(2, "状态", LVCFMT_LEFT, 40);

	if(GetDocument()->m_bSetuped)
	{
		CString str;
		
		for(i = 0; i < GetDocument()->m_device_info.alarm_count; i++)
		{
			str.Format("%d",i + 1);
			int nRow = m_ListAlarm.InsertItem(i,str);

			m_ListAlarm.SetItemText(nRow, 1, (CString)GetDocument()->m_AlarmInfo[i].digital_name);
		}
		for(i = 0; i < GetDocument()->m_device_info.act_count; i++)
		{
			str.Format("%d",i + 1);
			int nrow = m_ListRecord.InsertItem(i,str);

			m_ListRecord.SetItemText(nrow, 1, (CString)GetDocument()->m_AlarmInfo[i].digital_name);
		}
	}
}

int CRecordInfoView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CFormView::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	// TODO: Add your specialized creation code here
	SetTimer(1,500,NULL);
	return 0;
}

void CRecordInfoView::OnDestroy() 
{
	CFormView::OnDestroy();
	
	// TODO: Add your message handler code here
	KillTimer(1);
}

void CRecordInfoView::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	char szBuf[1024];
	memset(szBuf,0,sizeof(szBuf));
	CString str;
	if(1 == nIDEvent)
	{
		m_nTimerFlag++;
		
		if(m_nTimerFlag > 1)
		{
			m_nTimerFlag --;
		}
		else
		{
			if(GetDocument()->m_bSetuped)
			{
				int i;
				for(i = 0; i < GetDocument()->m_device_info.alarm_count; i++)
				{
					if(GetDocument()->m_bAlarmValue[i] == 0)
					{
						str.Format("%s", GetDocument()->m_AlarmInfo[i].off_name);
						m_ListAlarm.SetItemText(i,2,str);
					}
					else
					{
						str.Format("%s", GetDocument()->m_AlarmInfo[i].on_name);
						m_ListAlarm.SetItemText(i,2,str);
					}
				}

				for(i = 0; i < GetDocument()->m_device_info.act_count; i++)
				{
					if(GetDocument()->m_bRecord[i] == 0)
					{
						str.Format("%s", GetDocument()->m_RecordInfo[i].off_name);
						m_ListRecord.SetItemText(i,2,str);
					}
					else
					{
						str.Format("%s", GetDocument()->m_RecordInfo[i].on_name);
						m_ListRecord.SetItemText(i,2,str);
					}
				}
				if(GetDocument()->m_bRecordChg)
				{
					int change;
					int record = 0, recordbuf = 0;
					int display[32];
					memset(display, 0, 32);
					for(i  = 0; i < 32; i++)
					{
						record += GetDocument()->m_bRecord[i] * (i * 0x02);
						recordbuf += GetDocument()->m_bRecordChange[i] * (i * 0x02);
					}
					
					change = record ^ recordbuf;
					
					for(i = 0; i < 32; i++)
					{
						display[i] = change & (0x02 * i);
					}
					if(change)
					{
						TIME *time = &GetDocument()->m_Time.RecordTime;
						CString str;
						str.Format("%d年%d月%d日%d时%d分%d秒%f毫秒", time->year, time->month,time->day,time->hour,time->minute,time->second,time->ms);
						m_EditRecord.SetSel(0,0);
						m_EditRecord.ReplaceSel(str);

						for(i = 0; i < 32; i++)
						{
							display[i] = change & (0x02 * i);
							if(display[i])
							{
								m_EditRecord.SetSel(0,0);
								if(GetDocument()->m_bRecord[i] == 0)
								{
									str.Format("%s", GetDocument()->m_RecordInfo[i].off_name);
									m_EditRecord.ReplaceSel(str);
								}
								else
								{
									str.Format("%s 消失", GetDocument()->m_RecordInfo[i].on_name);
									m_EditRecord.ReplaceSel(str);
								}
							}
						}

					}
					memcpy(GetDocument()->m_bRecordChange, GetDocument()->m_bRecord, sizeof(GetDocument()->m_bRecord));
					GetDocument()->m_bRecordChg = FALSE;
				}
			}
		}
		m_nTimerFlag--;
	}
	CFormView::OnTimer(nIDEvent);
}

void CRecordInfoView::OnActivateView(BOOL bActivate, CView* pActivateView, CView* pDeactiveView) 
{
	// TODO: Add your specialized code here and/or call the base class
	UpdateData();
	if(bActivate == FALSE)
	{
		KillTimer(1);
	}
	else
	{
		OnInitialUpdate();
		SetTimer(1,500,NULL);
	}
	CFormView::Invalidate();
	CFormView::OnActivateView(bActivate, pActivateView, pDeactiveView);
}

⌨️ 快捷键说明

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