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