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

📄 evttypeconfigdlg.cpp

📁 电力监控系统 实时告警处理程序
💻 CPP
字号:
// EvtTypeConfigDlg.cpp : implementation file
//

#include "stdafx.h"
#include "realev.h"
#include "EvtTypeConfigDlg.h"
#include "XListCtrl.h"
#include "RealEvView.h"
#include "mainfrm.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CEvtTypeConfigDlg dialog


CEvtTypeConfigDlg::CEvtTypeConfigDlg(CWnd* pParent /*=NULL*/,evtdb* pdb)
: CDialog(CEvtTypeConfigDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CEvtTypeConfigDlg)
	//}}AFX_DATA_INIT
	m_pEvtDb = pdb;
	m_pNames = NULL;
	m_pTypes = NULL;
	m_pColors = NULL;
	m_nTypeCounts = 0;
}


void CEvtTypeConfigDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CEvtTypeConfigDlg)
	DDX_Control(pDX, IDC_LIST, m_list);
	//	DDX_Control(pDX, IDC_MCOMLIST, m_forcolor);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CEvtTypeConfigDlg, CDialog)
//{{AFX_MSG_MAP(CEvtTypeConfigDlg)
ON_BN_CLICKED(IDOK, On_EvtConfigDlg_OK)
ON_WM_TIMER()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CEvtTypeConfigDlg message handlers

void CEvtTypeConfigDlg::FillListCtrl(CMyListCtrl1 &list)
{
	m_nTypeCounts = m_pEvtDb->GetEvtTypeCounts();
	m_pNames = new CString[m_nTypeCounts];
	m_pTypes = new WORD[m_nTypeCounts];
	m_pColors = new COLORREF[m_nTypeCounts];
	m_pEvtDb->GetEventType(m_pNames,m_pTypes,m_pColors);
	
	list.LockWindowUpdate();	// ***** lock window updates while filling list *****
	CString str;
	int nItem, nSubItem;
	BOOL bResult;
	// insert the items and subitems into the list
	for (nItem = 0; nItem < m_nTypeCounts; nItem++)
	{
		for (nSubItem = 0; nSubItem <  list.m_HeaderCtrl.GetItemCount(); nSubItem++)//7
		{			
			if (nSubItem == 0)
			{
				bResult=m_pEvtDb->GetIfShow(nItem);
				list.InsertItem(nItem, _T(""));
				list.SetCheckbox(nItem, nSubItem, bResult);
				list.SetEnabled(nItem,m_pEvtDb->GetIfShow(nItem));
			}
			
			list.SetItemText(nItem, nSubItem, _T(""), RGB(0,0,0), RGB(0,200,0));
			
			if (nSubItem == 1)
			{
				str = m_pNames[nItem];//_T("告警名称");
				list.SetItemText(nItem, nSubItem, str);
			}
			
			if (nSubItem == 2)
			{	
				if(!m_pEvtDb->GetIfShow(nItem))
					bResult=m_pEvtDb->SetIfPlaySound(nItem,0);
				bResult=m_pEvtDb->GetIfPlaySound(nItem);
				list.SetCheckbox(nItem, nSubItem, bResult);
			}
			
			if (nSubItem == 3)
			{
				if(!m_pEvtDb->GetIfShow(nItem))
					bResult=m_pEvtDb->SetIfPlayRing(nItem,0);
				bResult=m_pEvtDb->GetIfPlayRing(nItem);
				list.SetCheckbox(nItem, nSubItem, bResult);
			}
			if (nSubItem == 4)
			{
				if(!m_pEvtDb->GetIfShow(nItem))
					bResult=m_pEvtDb->SetIfPlayAlarm(nItem,0);
				bResult=m_pEvtDb->GetIfPlayAlarm(nItem);
				list.SetCheckbox(nItem, nSubItem, bResult);
			}
			if (nSubItem == 5)
			{
				if(!m_pEvtDb->GetIfShow(nItem))
					bResult=m_pEvtDb->SetIfPicture(nItem,0);
				bResult=m_pEvtDb->GetIfPicture(nItem);
				list.SetCheckbox(nItem, nSubItem, bResult);
			}
			if (nSubItem == 6)
			{
				if(!m_pEvtDb->GetIfShow(nItem))
					bResult=m_pEvtDb->SetIfPrint(nItem,0);
				bResult=m_pEvtDb->GetIfPrint(nItem);
				list.SetCheckbox(nItem, nSubItem, bResult);
			}
		/*
		 *	
		 if (nSubItem == 6)			// text
			{
				int c_EventCode=m_pTypes[nItem];//m_pEvtDb->GetEvtTypeCounts();//GetEventCode(nItem);
				str.Format("类型为:%d",c_EventCode);
				list.SetItemText(nItem, nSubItem, str);
			}
			*/		
		}
	}
	
#ifndef NO_XLISTCTRL_TOOL_TIPS
	
	// set tool tips in second row
	for (nItem = 0; nItem < m_nTypeCounts; nItem++)
	{
		for (nSubItem = 0; nSubItem <7; nSubItem++)
		{
			str.Format(_T("设置 %s"), m_pNames[nItem]);
			list.SetItemToolTipText(nItem, nSubItem, str);
		}
	}
#endif
	
	list.UnlockWindowUpdate();	// ***** unlock window updates *****
	
}

void CEvtTypeConfigDlg::InitListCtrl(CMyListCtrl1 &list)
{
	CRect rect;
	list.GetWindowRect(&rect);
	
	int w = rect.Width() - 2;
	int colwidths[7] = { 8,20,8,8,8,10,8};	
	
	TCHAR *	lpszHeaders[] = { _T("显示"),
		_T("告警名称"),
		_T("语音"),
		_T("电铃"),
		_T("电笛"),
		_T("推画面"),
		_T("打印"),
		//_T("事项句"),
		NULL };
	int i;
	int total_cx = 0;
	LV_COLUMN lvcolumn;
	memset(&lvcolumn, 0, sizeof(lvcolumn));
	
	for (i = 0; ; i++)
	{
		if (lpszHeaders[i] == NULL)
			break;
		
		lvcolumn.mask = LVCF_FMT | LVCF_SUBITEM | LVCF_TEXT | LVCF_WIDTH;
		lvcolumn.fmt = (i == 1) ? LVCFMT_LEFT : LVCFMT_CENTER;
		lvcolumn.pszText = lpszHeaders[i];
		lvcolumn.iSubItem = i;
		lvcolumn.cx = (lpszHeaders[i+1] == NULL) ? 100 : (w * colwidths[i]) /64;
		total_cx += lvcolumn.cx;
		list.InsertColumn(i, &lvcolumn);
	}
	
	VERIFY(list.m_cImageList.Create(IDB_CHECKBOXES, 16,3, RGB(255, 0, 255)));
	list.m_HeaderCtrl.SetImageList(&list.m_cImageList);
	
	HDITEM hditem;
	for (i = 0; i < list.m_HeaderCtrl.GetItemCount(); i++)
	{
		hditem.mask = HDI_IMAGE | HDI_FORMAT;
		list.m_HeaderCtrl.GetItem(i, &hditem);
		hditem.fmt |=  HDF_IMAGE;
		list.m_HeaderCtrl.SetItem(i, &hditem);
	}
	memset(&lvcolumn, 0, sizeof(lvcolumn));
	for (i = 0; ; i++)
	{
		if (lpszHeaders[i] == NULL)
			break;
		lvcolumn.mask = LVCF_FMT | LVCF_SUBITEM;
		lvcolumn.fmt = (i == 1) ? LVCFMT_LEFT : LVCFMT_CENTER;
		lvcolumn.iSubItem = i;
		list.SetColumn(i, &lvcolumn);
	}
	
}

BOOL CEvtTypeConfigDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	m_list.m_pEvtDb=this->m_pEvtDb;
	m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_TRACKSELECT);
	m_list.EnableToolTips(TRUE);
	
	InitListCtrl(m_list);
	FillListCtrl(m_list);
	return TRUE; 
}

void CEvtTypeConfigDlg::On_EvtConfigDlg_OK() 
{
	CRealEvView* pView=((CRealEvView*)((CFrameWnd*)AfxGetApp()->m_pMainWnd)->GetActiveView());
	pView->UpdateData(true);
	//pView->m_lsEvent.DeleteAllItems();
	m_pEvtDb->SetEventType();
	pView->InitDropList();
	pView->UpdateWarn();
	CDialog::OnOK();
}

void CEvtTypeConfigDlg::OnCancel() 
{
 	
	CDialog::OnCancel();
}

⌨️ 快捷键说明

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