📄 kreceivealarmmanage.cpp
字号:
// KReceiveAlarmManage.cpp: implementation of the KReceiveAlarmManage class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
//#include "alarmclient.h"
#include "KReceiveAlarmManage.h"
#include "../KJAlarmProtocol/KAlarmProtocol.h"
#include "../KJAlarmProtocol/KAffirmReceiveAlarmProtocol.h"
#include "../KylinSystem/KServerNode.h"
#include "../KylinSystem/KNodeManager.h"
#include "../KylinSystem/KPath.h"
#include "../KylinSystem/KXMLDocument.h"
#include "../KylinSystem/KXMLNode.h"
#include "../KylinSystem/KSystemInfo.h"
#include "KReceiveAlarmPopDlg.h"
#include "KXMLManager.h"
#include "KMAIDisplayAlarmDlg.h"
#include "KAlarmClientServer.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
const CString KReceiveAlarmManage::_TypeName=_T("Alarm.ReceiveAlarmProcessor");
const KGuid KReceiveAlarmManage::_TypeID(_T("{32140D40-BFD3-4637-B2B8-CF56C7B3F5B5}"));
KReceiveAlarmManage::KReceiveAlarmManage()
{
}
KReceiveAlarmManage::~KReceiveAlarmManage()
{
}
const KGuid KReceiveAlarmManage::TypeID()
{
return _TypeID;
}
const CString KReceiveAlarmManage::TypeName()
{
return _TypeName;
}
const KGuid KReceiveAlarmManage::GetTypeID()
{
return _TypeID;
}
const CString KReceiveAlarmManage::GetTypeName()
{
return _TypeName;
}
bool KReceiveAlarmManage::Execute()
{
KAlarmProtocol* AlarmProtocol=(KAlarmProtocol*)mInputMessage;
//判断收到的报警类型:是刚发生的报警,还是结束的报警,根据类型的不同做不同的处理
KAffirmReceiveAlarmProtocol AffirmReceivePt;
AffirmReceivePt.SetUseName(AlarmProtocol->GetUseName());
AffirmReceivePt.SetEventID(AlarmProtocol->GetEventID());
AffirmReceivePt.SetIsReceived("1");
if(AlarmProtocol->Getstate()=="0")
{
AffirmReceivePt.SetIsFinished("0");
}
else
{
AffirmReceivePt.SetIsFinished("1");
}
//1,发送收到报警确认协议,通知服务器已经收到本警报
KServerNode* ServerNode=KNodeManager::Instance()->GetLocalServer()->Parent;
if(ServerNode!=NULL)
{
ServerNode->Send(&AffirmReceivePt);
}
KXMLManager* xml = KXMLManager::Instance();
bool blExist=xml->IsHaveStateAlarm(AlarmProtocol);
if(AlarmProtocol->GetAlarmType()=="NOSEND")
{
if(!blExist)
{
xml->InsertXMLInfo(AlarmProtocol);
}
}
else
{
//3,保存(或更新)报警信息到xml文件中
//判断是否存在本报警,如果存在不弹出
if(AlarmProtocol->Getstate()=="0")
{
xml->InsertXMLInfo(AlarmProtocol);
}
else
{
xml->UpdateXMLInfo(AlarmProtocol);
}
KAlarmClientServer* host = (KAlarmClientServer*)mHostService;
//2,弹出报警弹出窗体,显示收到的报警
if(!blExist && host->mPopupEvent)
{
KReceiveAlarmPopDlg* AlarmPopDlg;
AlarmPopDlg=new KReceiveAlarmPopDlg();
AlarmPopDlg->blAutoClose = true;
AlarmPopDlg->SetAlarmProtocol(AlarmProtocol);
AlarmPopDlg->Create(IDD_DIALOGRECEIVEALARM,NULL);
if(false && (KSystemInfo::IsWin2K() || KSystemInfo::IsWin98()))
{
CRect rc;
GetWindowRect(GetDesktopWindow(), &rc);
HWND mTrayWnd = FindWindow(_T("Shell_TrayWnd"), NULL);
if(mTrayWnd != NULL)
{
CRect rcDlg;
GetWindowRect(mTrayWnd, &rcDlg);
if(rc.left < rcDlg.left)
rc.right = rcDlg.left;
else if(rc.top < rcDlg.top)
rc.bottom = rcDlg.top;
else if(rc.right > rcDlg.right)
rc.left = rcDlg.right;
else if(rc.bottom > rcDlg.bottom)
rc.top = rcDlg.bottom;
}
CRect rcdlg;
AlarmPopDlg->GetWindowRect(&rcdlg);
rcdlg.OffsetRect(rc.right - rcdlg.Width() - rcdlg.left
,rc.bottom - rcdlg.Height() - rcdlg.top);
AlarmPopDlg->MoveWindow(&rcdlg);
AlarmPopDlg->SetWindowPos(&CWnd::wndTopMost, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
AnimateWindow(AlarmPopDlg->m_hWnd, 500, AW_SLIDE | AW_VER_NEGATIVE);
}
else
{
AlarmPopDlg->ShowWindow(SW_SHOW);
}
}
HWND wnd=FindWindow(NULL,"处理中报警信息");
if(wnd != NULL)
{
::SendMessage(wnd, WM_SETDIRTY, 0, 0);
}
}
return true;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -