📄 alarmform.cpp
字号:
// AlarmForm.cpp : 实现文件
//
#include "stdafx.h"
#include "MDF.h"
#include "AlarmForm.h"
#include ".\alarmform.h"
// CAlarmForm
IMPLEMENT_DYNCREATE(CAlarmForm, CFormView)
extern CMDFApp theApp ;
//##ModelId=465286A50010
CAlarmForm::CAlarmForm()
: CFormView(CAlarmForm::IDD)
{
//m_tabAlarm.Create(TCS_VERTICAL|TCS_BOTTOM|TCS_MULTILINE,CRect(0,0,0,0),this,IDC_TABALARM);
p_adodb = theApp.m_pAdoDB;
iAlarm = 0;
}
//##ModelId=465286A5001F
CAlarmForm::~CAlarmForm()
{
}
//##ModelId=465286A5003E
void CAlarmForm::DoDataExchange(CDataExchange* pDX)
{
CFormView::DoDataExchange(pDX);
DDX_Control(pDX, IDC_TABALARM, m_tabAlarm);
DDX_Control(pDX, IDC_LISTALARM, m_listAlarm);
DDX_Control(pDX, IDC_STCALARM, m_PicAlarm);
DDX_Control(pDX, IDC_LISTHISTORY, m_LstHistory);
DDX_Control(pDX, IDC_LISTFACULT, m_listFacult);
DDX_Control(pDX, IDC_LISTONLINE, m_listOnline);
}
BEGIN_MESSAGE_MAP(CAlarmForm, CFormView)
ON_WM_SIZE()
ON_NOTIFY(TCN_SELCHANGE, IDC_TABALARM, OnTcnSelchangeTabalarm)
ON_MESSAGE(WM_STATUS_CHANGE,onStatusChange) //设备状态改变
ON_NOTIFY(NM_CLICK, IDC_LISTALARM, OnNMClickListalarm)
ON_NOTIFY(NM_DBLCLK, IDC_LISTALARM, OnNMDblclkListalarm)
ON_WM_PAINT()
ON_WM_CREATE()
ON_STN_CLICKED(IDC_STCALARM, OnStnClickedStcalarm)
ON_COMMAND(ID_POP_REFRESH, OnPopRefresh)
ON_NOTIFY(NM_RCLICK, IDC_LISTHISTORY, OnNMRclickListhistory)
ON_COMMAND(ID_POP_SMALL, OnPopSmall)
ON_COMMAND(ID_POP_DETAIL, OnPopDetail)
ON_COMMAND(ID_POP_LARGE, OnPopLarge)
ON_COMMAND(ID_POP_LIST, OnPopList)
ON_NOTIFY(NM_RCLICK, IDC_LISTFACULT, OnNMRclickListfacult)
ON_NOTIFY(NM_RCLICK, IDC_LISTALARM, OnNMRclickListalarm)
ON_NOTIFY(LVN_ITEMCHANGED, IDC_LISTONLINE, OnLvnItemchangedListonline)
END_MESSAGE_MAP()
// CAlarmForm 诊断
#ifdef _DEBUG
//##ModelId=465286A50021
void CAlarmForm::AssertValid() const
{
CFormView::AssertValid();
}
//##ModelId=465286A5002F
void CAlarmForm::Dump(CDumpContext& dc) const
{
CFormView::Dump(dc);
}
#endif //_DEBUG
// CAlarmForm 消息处理程序
//##ModelId=465286A5006D
void CAlarmForm::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
ModifyStyle(WS_VSCROLL,NULL);
IniControl();
}
// 初始化控件
//##ModelId=465286A5006F
int CAlarmForm::IniControl(void)
{
//初始TAB控件
CBitmap *bmIcon16 = new CBitmap();
bmIcon16->LoadBitmap(IDB_BMPALARM16);
m_imgList.Create(16,16,ILC_COLOR24,5,1);
m_imgList.SetBkColor(RGB(255,255,255));
m_imgList.Add(bmIcon16,RGB(0,0,0));
CBitmap *bmIcon32 = new CBitmap();
bmIcon32->LoadBitmap(IDB_BMPALARM32);
m_imgList32.Create(32,32,ILC_COLOR24,5,1);
m_imgList32.SetBkColor(RGB(255,255,255));
m_imgList32.Add(bmIcon32,RGB(0,0,0));
delete bmIcon16;
delete bmIcon32;
m_listAlarm.SetImageList(&m_imgList,LVSIL_SMALL);
m_listAlarm.SetImageList(&m_imgList32,LVSIL_NORMAL);
m_listAlarm.SetImageList(&m_imgList,LVSIL_STATE);
m_LstHistory.SetImageList(&m_imgList,LVSIL_SMALL);
m_LstHistory.SetImageList(&m_imgList32,LVSIL_NORMAL);
m_LstHistory.SetImageList(&m_imgList,LVSIL_STATE);
m_listOnline.SetImageList(&m_imgList,LVSIL_SMALL);
m_listOnline.SetImageList(&m_imgList32,LVSIL_NORMAL);
m_listOnline.SetImageList(&m_imgList,LVSIL_STATE);
//设置告警标志父
m_PicAlarm.SetParent(&m_tabAlarm);
int iTab = 0 ;
TCITEM tcItem;
tcItem.mask = TCIF_TEXT;
tcItem.pszText = _T("告警信息");
m_tabAlarm.InsertItem(iTab++,&tcItem);
tcItem.pszText = _T("告警历史");
m_tabAlarm.InsertItem(iTab++,&tcItem);
tcItem.pszText = _T("派障记录");
m_tabAlarm.InsertItem(iTab++,&tcItem);
tcItem.pszText = _T("端口状态");
m_tabAlarm.InsertItem(iTab++,&tcItem);
CRect lRect;
this->GetClientRect(lRect);
m_tabAlarm.MoveWindow(lRect);
m_tabAlarm.GetClientRect(lRect);
m_tabAlarm.ModifyStyle(NULL,TCS_FLATBUTTONS|TCS_BOTTOM);
//初始告警列表控件
m_listAlarm.SetParent(&m_tabAlarm);
m_listAlarm.DeleteAllItems();
int i = 0;
//m_listAlarm.MoveWindow(lRect);
m_listAlarm.ModifyStyle(NULL,LVS_REPORT | WS_VSCROLL | WS_VSCROLL );
m_listAlarm.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_FLATSB|LVS_EX_GRIDLINES|LVS_EX_ONECLICKACTIVATE|LVS_EX_SIMPLESELECT);
m_listAlarm.InsertColumn(i,"序号",LVCFMT_CENTER,60,0);
m_listAlarm.InsertColumn(++i,"设备名称",LVCFMT_CENTER,100,0);
m_listAlarm.InsertColumn(++i,"告警端口",LVCFMT_CENTER,60,0);
m_listAlarm.InsertColumn(++i,"告警状态",LVCFMT_CENTER,60,0);
m_listAlarm.InsertColumn(++i,"时间",LVCFMT_CENTER,160,0);
m_listAlarm.InsertColumn(++i,"秒数",LVCFMT_CENTER,40,0);
m_listAlarm.InsertColumn(++i,"告警值",LVCFMT_CENTER,40,0);
m_listAlarm.InsertColumn(++i,"级别",LVCFMT_CENTER,40,0);
m_listAlarm.InsertColumn(++i,"处理结果",LVCFMT_CENTER,160,0);
m_listAlarm.InsertColumn(++i,"对象描述",LVCFMT_CENTER,160,0);
//初始化告警历史记录控件
i = 0;
m_LstHistory.SetParent(&m_tabAlarm);
m_LstHistory.DeleteAllItems();
//m_listAlarm.MoveWindow(lRect);
m_LstHistory.ModifyStyle(NULL,LVS_REPORT | WS_VSCROLL | WS_VSCROLL );
m_LstHistory.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_FLATSB|LVS_EX_GRIDLINES|LVS_EX_ONECLICKACTIVATE|LVS_EX_SIMPLESELECT);
m_LstHistory.InsertColumn(i,"序号",LVCFMT_CENTER,60,0);
m_LstHistory.InsertColumn(++i,"设备名称",LVCFMT_CENTER,100,0);
m_LstHistory.InsertColumn(++i,"端口",LVCFMT_CENTER,40,0);
m_LstHistory.InsertColumn(++i,"级别",LVCFMT_CENTER,40,0);
m_LstHistory.InsertColumn(++i,"起始时间",LVCFMT_CENTER,100,0);
m_LstHistory.InsertColumn(++i,"结束时间",LVCFMT_CENTER,100,0);
m_LstHistory.InsertColumn(++i,"数值",LVCFMT_CENTER,60,0);
m_LstHistory.InsertColumn(++i,"状态",LVCFMT_CENTER,60,0);
m_LstHistory.InsertColumn(++i,"处理结果",LVCFMT_CENTER,100,0);
m_listFacult.SetParent(&m_tabAlarm);
m_listFacult.DeleteAllItems();
//m_listAlarm.MoveWindow(lRect);
m_listFacult.ModifyStyle(NULL,LVS_REPORT | WS_VSCROLL | WS_VSCROLL );
m_listFacult.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_FLATSB|LVS_EX_GRIDLINES|LVS_EX_ONECLICKACTIVATE|LVS_EX_SIMPLESELECT);
m_listFacult.InsertColumn(i,"序号",LVCFMT_CENTER,40,0);
m_listFacult.InsertColumn(++i,"设备名称",LVCFMT_CENTER,100,0);
m_listFacult.InsertColumn(++i,"告警端口",LVCFMT_CENTER,100,0);
m_listFacult.InsertColumn(++i,"维护人员",LVCFMT_CENTER,100,0);
m_listFacult.InsertColumn(++i,"电话",LVCFMT_CENTER,100,0);
m_listFacult.InsertColumn(++i,"任务",LVCFMT_CENTER,200,0);
m_listFacult.InsertColumn(++i,"起始时间",LVCFMT_CENTER,140,0);
m_listFacult.InsertColumn(++i,"结束时间",LVCFMT_CENTER,140,0);
m_listFacult.InsertColumn(++i,"接受时间",LVCFMT_CENTER,140,0);
m_listFacult.InsertColumn(++i,"完成时间",LVCFMT_CENTER,140,0);
m_listFacult.InsertColumn(++i,"处理结果",LVCFMT_CENTER,140,0);
m_listOnline.SetParent(&m_tabAlarm);
m_listOnline.DeleteAllItems();
//m_listAlarm.MoveWindow(lRect);
m_listOnline.ModifyStyle(NULL,LVS_ICON | WS_VSCROLL | WS_VSCROLL );
m_listOnline.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_FLATSB|LVS_EX_GRIDLINES|LVS_EX_ONECLICKACTIVATE|LVS_EX_SIMPLESELECT);
m_listOnline.InsertColumn(i,"设备端口",LVCFMT_CENTER,140,0);
m_listOnline.InsertColumn(++i,"设备",LVCFMT_CENTER,100,0);
m_listOnline.InsertColumn(++i,"端口",LVCFMT_CENTER,60,0);
m_listOnline.InsertColumn(++i,"状态",LVCFMT_CENTER,100,0);
//读数据记录
SetAlarmPic(0);
CString strSql;
strSql = _T("");
ReadHistory(strSql);
ReadFault(strSql);
m_testDlg.Create(IDD_SERIALTEST_DIALOG,GetDlgItem(IDC_TABALARM));
m_testDlg.ShowWindow(SW_HIDE);
m_tabAlarm.SetFocus();
m_tabAlarm.SetCurSel(0);
//m_listAlarm.ShowWindow(SW_SHOW);
//m_LstHistory.ShowWindow(SW_HIDE);
//m_listFacult.ShowWindow(SW_HIDE);
//m_listOnline.ShowWindow(SW_HIDE);
//m_PicAlarm.ShowWindow(SW_SHOW);
//m_testDlg.ShowWindow(SW_HIDE);
return 0;
}
//##ModelId=465286A5007D
void CAlarmForm::OnSize(UINT nType, int cx, int cy)
{
CFormView::OnSize(nType, cx, cy);
CRect lRect,lRect1;
if (m_tabAlarm)
{
GetWindowRect(lRect);
ScreenToClient(lRect);
m_tabAlarm.MoveWindow(lRect);
m_tabAlarm.GetClientRect(lRect);
//lRect.top += 20;
lRect.bottom -= 20;
m_testDlg.MoveWindow(lRect);
lRect.left += 50 ;
m_listAlarm.MoveWindow(lRect);
m_listFacult.MoveWindow(lRect);
m_LstHistory.MoveWindow(lRect);
m_listOnline.MoveWindow(lRect);
m_PicAlarm.GetWindowRect(lRect1);
//ScreenToClient(lRect1);
lRect1.top = 2;
lRect1.bottom = lRect.top + lRect.Height();
lRect1.left = 2;
lRect1.right = lRect1.left + 48;
m_PicAlarm.MoveWindow(lRect1);
}
}
//##ModelId=465286A5008E
void CAlarmForm::OnTcnSelchangeTabalarm(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: 在此添加控件通知处理程序代码
int iTab = m_tabAlarm.GetCurSel();
switch (iTab)
{
case 0:
m_listAlarm.ShowWindow(SW_SHOW);
m_LstHistory.ShowWindow(SW_HIDE);
m_listFacult.ShowWindow(SW_HIDE);
m_listOnline.ShowWindow(SW_HIDE);
m_PicAlarm.ShowWindow(SW_SHOW);
m_testDlg.ShowWindow(SW_HIDE);
SetAlarmPic(0);
break;
case 1:
m_listAlarm.ShowWindow(SW_HIDE);
m_LstHistory.ShowWindow(SW_SHOW);
m_listFacult.ShowWindow(SW_HIDE);
m_listOnline.ShowWindow(SW_HIDE);
m_PicAlarm.ShowWindow(SW_SHOW);
m_testDlg.ShowWindow(SW_HIDE);
SetAlarmPic(0);
break;
case 2:
m_listAlarm.ShowWindow(SW_HIDE);
m_LstHistory.ShowWindow(SW_HIDE);
m_listFacult.ShowWindow(SW_SHOW);
m_listOnline.ShowWindow(SW_HIDE);
m_PicAlarm.ShowWindow(SW_SHOW);
m_testDlg.ShowWindow(SW_HIDE);
SetAlarmPic(0);
break;
case 3:
m_listAlarm.ShowWindow(SW_HIDE);
m_LstHistory.ShowWindow(SW_HIDE);
m_listFacult.ShowWindow(SW_HIDE);
m_PicAlarm.ShowWindow(SW_HIDE);
//m_listOnline.ShowWindow(SW_SHOW);
//if (m_listOnline.GetItemCount() <= 0)
//{
// CString sSql;
// ReadPortStatus(sSql);
//}
m_testDlg.ShowWindow(SW_SHOW);
//m_testDlg.EnableWindow();
break;
}
*pResult = 0;
}
//##ModelId=465286A5009F
BOOL CAlarmForm::CreateEx(DWORD dwExStyle, LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, LPVOID lpParam)
{
// TODO: 在此添加专用代码和/或调用基类
return CFormView::CreateEx(dwExStyle, lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, lpParam);
}
//##ModelId=465286A500CB
BOOL CAlarmForm::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext)
{
// TODO: 在此添加专用代码和/或调用基类
//dwStyle -= WS_VSCROLL;
return CFormView::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext);
}
//##ModelId=465286A500EB
LRESULT CAlarmForm::onStatusChange(WPARAM wParam, LPARAM lParam)
{
//处理告警或消警状态变化
int iStatus = (int)wParam;
switch(iStatus)
{
case -1:
if (iAlarm > 0)
iAlarm-- ;
break;
case 1:
iAlarm++;
break;
}
SetAlarmPic(iAlarm);
/****************************************************************************
发出告警短信息
****************************************************************************/
return LRESULT();
}
//##ModelId=465286A500FB
void CAlarmForm::OnNMClickListalarm(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: 在此添加控件通知处理程序代码
*pResult = 0;
}
//##ModelId=465286A5010C
void CAlarmForm::OnNMDblclkListalarm(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: 在此添加控件通知处理程序代码
m_listAlarm.DeleteAllItems();
*pResult = 0;
}
// 设置告警图片
//##ModelId=465286A50128
int CAlarmForm::SetAlarmPic(int iLevel)
{
COLORREF clWhite = RGB(255,255,255);
CDC *dc = m_PicAlarm.GetWindowDC();
CRect lpRect;
m_PicAlarm.GetWindowRect(lpRect);
ScreenToClient(lpRect);
CBrush *brush;
brush = new CBrush(clWhite);
dc->FillRect(lpRect,brush);
CBitmap *bmAlarm = new CBitmap();
if (iLevel <= 0)
{
bmAlarm->LoadBitmap(IDB_BMPGREEN);
}else if(iLevel > 0)
bmAlarm->LoadBitmap(IDB_BMPRED);
CDC *dcMem = new CDC();
dcMem->CreateCompatibleDC(dc);
CBitmap *pBmp = dcMem->SelectObject(bmAlarm);
dc->TransparentBlt(0,0,48,48,dcMem,0,0,64,64,RGB(0,0,0));
dcMem->SelectObject(pBmp);
m_PicAlarm.UpdateWindow();
delete dcMem;
delete bmAlarm;
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -