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

📄 kmaidisplayalarmdlg.cpp

📁 数据安全方面的程序 应用很广泛的 欢迎大家
💻 CPP
字号:
// KMAIDisplayAlarmDlg.cpp : implementation file
//

#include "stdafx.h"
#include "KMAIDisplayAlarmDlg.h"
#include "KXMLManager.h"
#include "KAlarmInfoDlg.h"
#include "KAnswerAlarmDlg.h"
#include "KPOPDlg.h"
#include "../KylinSystem/KTime.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// KMAIDisplayAlarmDlg dialog
KMAIDisplayAlarmDlg* KMAIDisplayAlarmDlg::ActiveWindow = NULL;

KMAIDisplayAlarmDlg::KMAIDisplayAlarmDlg(CWnd* pParent /*=NULL*/)
	: CDialog(KMAIDisplayAlarmDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(KMAIDisplayAlarmDlg)
	m_QueryValue = _T("");
	//}}AFX_DATA_INIT
	ActiveWindow = this;
}


void KMAIDisplayAlarmDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(KMAIDisplayAlarmDlg)
	DDX_Control(pDX, IDC_COMBO1, m_QueryType);
	DDX_Control(pDX, IDNOCEIVE, m_NOCEIVE);
	DDX_Control(pDX, IDMANAGING, m_MANAGING);
	DDX_Control(pDX, IDFINISH, m_FINISH);
	DDX_Control(pDX, IDOK, m_AnswerBT);
	DDX_Text(pDX, IDC_EDIT1, m_QueryValue);
	DDX_Control(pDX, IDC_MSFLEXGRIDAlARM, m_AlarmList);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(KMAIDisplayAlarmDlg, CDialog)
	//{{AFX_MSG_MAP(KMAIDisplayAlarmDlg)
	ON_BN_CLICKED(IDOK, OnAnswerAlarm)
	ON_BN_CLICKED(IDLookHIS, OnLookHIS)
	ON_BN_CLICKED(IDC_BUTTONQUERY, OnButtonquery)
	ON_BN_CLICKED(IDMANAGING, OnManaging)
	ON_BN_CLICKED(IDFINISH, OnFinish)
	ON_BN_CLICKED(IDNOCEIVE, OnNoceive)
	ON_WM_TIMER()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// KMAIDisplayAlarmDlg message handlers

void KMAIDisplayAlarmDlg::OnCancel() 
{
	// TODO: Add extra cleanup here
	
	CDialog::OnCancel();
	DestroyWindow();
}

void KMAIDisplayAlarmDlg::OnAnswerAlarm() 
{
	// TODO: Add your control notification handler code here
	//对选中的行进行回复信息处理,弹出回复窗体
	if(SelectEventID!="")
	{
		KAnswerAlarmDlg   AnswerAlarmDlg;
		AnswerAlarmDlg.SetEventID(SelectEventID);
		if(AnswerAlarmDlg.DoModal() == IDOK)
		{
			this->OnInitDialog();
		}
	}
	else
	{
		KPOPDlg  POP;
		POP.PopInfo="请选择要回复的报警!";
		POP.DoModal();
	}
}

void KMAIDisplayAlarmDlg::OnLookHIS() 
{
}

BEGIN_EVENTSINK_MAP(KMAIDisplayAlarmDlg, CDialog)
    //{{AFX_EVENTSINK_MAP(KMAIDisplayAlarmDlg)
	ON_EVENT(KMAIDisplayAlarmDlg, IDC_MSFLEXGRIDAlARM, -600 /* Click */, OnClickMSFLEXGRIDAlARM, VTS_NONE)
	ON_EVENT(KMAIDisplayAlarmDlg, IDC_MSFLEXGRIDAlARM, 70 /* RowColChange */, OnRowColChangeMSFLEXGRIDAlARM, VTS_NONE)
	ON_EVENT(KMAIDisplayAlarmDlg, IDC_MSFLEXGRIDAlARM, -601 /* DblClick */, OnDblClickMSFLEXGRIDAlARM, VTS_NONE)
	//}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()

void KMAIDisplayAlarmDlg::OnClickMSFLEXGRIDAlARM() 
{
	// TODO: Add your control notification handler code here
	//AlarmList的单击事件,本行被选中,高亮显示
}

BOOL KMAIDisplayAlarmDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	for(int i=m_QueryType.GetCount();i>0;i--)
	{
		m_QueryType.DeleteString(0);
	}
	m_QueryType.AddString("矿井名称");
	m_QueryType.AddString("报警开始时间");
	m_QueryType.AddString("报警结束时间");
    SetDlgInfo();
	InitGrid();

	// TODO: Add extra initialization here

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void KMAIDisplayAlarmDlg::OnButtonquery() 
{
	// TODO: Add your control notification handler code here

	UpdateData();
	CString strQ="";
	int select=m_QueryType.GetCurSel();
    if(select==0)
	{
		strQ="MineName";
	}
	if(select==1)
	{
		strQ="StartTime";
	}
	if(select==2)
	{
		strQ="EndTime";
	}
	KXMLManager* xml = KXMLManager::Instance();
	
	if(select==-1||strQ=="")
	{
		//xml->GetAllAlarm();
		Alarm = &xml->NowAlarmList;
	}
	else
	{
		CString stQuery="";
		if(DlgType=="OLDALARM")
		{
		   stQuery=_T("MessageData[IsAnswer=='1' and State=='1']");
		}
		if(DlgType=="NEWALARM")
		{
			stQuery=_T("MessageData[(IsAnswer!='1' or State!='1') and IsNoReceiveAlarm!='NOSEND']");
		}
		else
		{
			stQuery=_T("MessageData[IsNoReceiveAlarm='NOSEND']");
		}
		xml->GetQueryAlarm(stQuery,strQ,m_QueryValue);
		Alarm = &xml->QueryAlarmList;
	}

	InitGrid();

}

void KMAIDisplayAlarmDlg::OnRowColChangeMSFLEXGRIDAlARM() 
{
	// TODO: Add your control notification handler code here
    //选择发生变化事件
    SelectEventID=m_AlarmList.GetText();
}

void KMAIDisplayAlarmDlg::OnDblClickMSFLEXGRIDAlARM() 
{
	// TODO: Add your control notification handler code here
	if(SelectEventID=="")
	{}
	else
	{
		KAlarmInfoDlg* InfoDlg=new KAlarmInfoDlg();
		InfoDlg->EventID=SelectEventID;
		InfoDlg->Create(IDD_DIALOGALARMINFO,this);
		InfoDlg->ShowWindow(SW_SHOW);
	}
}

void KMAIDisplayAlarmDlg::InitGrid()
{
	m_AlarmList.SetRows(1L);

 	CString sHeading;
	sHeading = _T(" ID|矿井名称|报警名称|测点名称|   开始时间  |   结束时间   |sort");
    m_AlarmList.SetFormatString(sHeading);

	//初始化值
	VARIANT   variant;   
    variant.vt   =   VT_I4;
    variant.lVal   =  1;    //添加的行

	KXMLManager *xml = KXMLManager::Instance();
	CString strInfo;
	m_AlarmList.SetRedraw(FALSE);
	KGuid mEventId;
	for(EVENTIDLIST::iterator it = Alarm->begin(); it != Alarm->end(); ++it)
	{
		mEventId = *it;
		strInfo = xml->AllAlarm[mEventId];
		m_AlarmList.AddItem(strInfo, variant);
	}
	m_AlarmList.SetRedraw(TRUE);

	//设置网格的样式
	//设置用户 可以调整
	m_AlarmList.SetAllowUserResizing(true);

	//设置排序
	if(m_AlarmList.GetRows() > 1)
	{
		m_AlarmList.SetRow(1);
		m_AlarmList.SetRowSel(m_AlarmList.GetRow());
	}
	m_AlarmList.SetCol(6);
	m_AlarmList.SetSort(2);
	m_AlarmList.SetAllowBigSelection(true);

	//设置为行选择
	m_AlarmList.SetSelectionMode(1);

	for(int i = 0; i < m_AlarmList.GetCols(); ++i)
	{
		m_AlarmList.SetColAlignment(i, 1);
	}
	//设置第一列和最后一列不可见
	m_AlarmList.SetColWidth(0,0);
	m_AlarmList.SetColWidth(1,2500);
	m_AlarmList.SetColWidth(2,2500);
	m_AlarmList.SetColWidth(3,2500);
	m_AlarmList.SetColWidth(4,2500);
	m_AlarmList.SetColWidth(5,2500);
	m_AlarmList.SetColWidth(6,0);
}


void KMAIDisplayAlarmDlg::PostNcDestroy()
{
	ActiveWindow = NULL;
	delete this;
}

void KMAIDisplayAlarmDlg::Init()
{
	this->SetDlgInfo();
	this->InitGrid();
}

void KMAIDisplayAlarmDlg::OnManaging() 
{
	if(this->DlgType != _T("NEWALARM"))
	{
		this->DlgType = _T("NEWALARM");
		this->SetDlgInfo();
		this->InitGrid();
	}
}

void KMAIDisplayAlarmDlg::OnFinish() 
{
	if(this->DlgType != _T("OLDALARM"))
	{
		this->DlgType = _T("OLDALARM");
		this->SetDlgInfo();
		this->InitGrid();
	}
}

void KMAIDisplayAlarmDlg::OnNoceive() 
{
	if(this->DlgType != _T("NOCEIVEALAM"))
	{
		this->DlgType = _T("NOCEIVEALAM");
		this->SetDlgInfo();
		this->InitGrid();
	}
}

void KMAIDisplayAlarmDlg::SetDlgInfo()
{
	KXMLManager* xml = KXMLManager::Instance();
	//xml->GetAllAlarm();

	if(DlgType=="OLDALARM")
	{
		this->SetWindowText("已处理报警信息");
		Alarm = &xml->OldAlarmList;
	}
	if(DlgType=="NEWALARM")
	{
		this->SetWindowText("处理中报警信息");
		Alarm = &xml->NowAlarmList;
	}
	if(DlgType=="NOCEIVEALAM")
	{
		this->SetWindowText("未处理报警信息");
		Alarm = &xml->NoCeiveAlarmList;
	}
}

BOOL KMAIDisplayAlarmDlg::PreTranslateMessage(MSG* pMsg) 
{
	return CDialog::PreTranslateMessage(pMsg);
}

LRESULT KMAIDisplayAlarmDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
{
	if(message == WM_SETDIRTY)
	{
		if(nTimer != 0)
		{
			KillTimer(nTimer);
			nTimer = 0;
		}
		nTimer = SetTimer(0, 5000, NULL);
	}
	return CDialog::WindowProc(message, wParam, lParam);
}

void KMAIDisplayAlarmDlg::OnTimer(UINT nIDEvent) 
{
	InitGrid();
	KillTimer(nTimer);
	nTimer = 0;
	CDialog::OnTimer(nIDEvent);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -