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

📄 kreceivealarmmanage.cpp

📁 数据安全方面的程序 应用很广泛的 欢迎大家
💻 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 + -