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

📄 alarmform.cpp

📁 MDF监控源码2
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// 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 + -