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

📄 realevview.cpp

📁 电力监控系统 实时告警处理程序
💻 CPP
📖 第 1 页 / 共 3 页
字号:
// RealEvView.cpp : implementation of the CRealEvView class
//

#include "stdafx.h"
#include "RealEv.h"
#include "afxpriv.h"
#include "DlgUser.h"

#include "RealEvDoc.h"
#include "RealEvView.h"
#include "EvtTypeConfigDlg.h"

#include "mainfrm.h"
#include "dlgcolor.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif



/////////////////////////////////////////////////////////////////////////////
// CRealEvView
#define WARNMSG "WarnMsg"
#define REQSAFEMSG "SafeDay"


static const UINT nMsgWarn = ::RegisterWindowMessage(WARNMSG);
static const UINT nSafeDay = ::RegisterWindowMessage(REQSAFEMSG);

IMPLEMENT_DYNCREATE(CRealEvView, CFormView)

BEGIN_MESSAGE_MAP(CRealEvView, CFormView)
//{{AFX_MSG_MAP(CRealEvView)
ON_WM_SIZE()
ON_WM_CREATE()
ON_WM_TIMER()
ON_COMMAND(ID_COLOR, OnColor)
ON_COMMAND(ID_EvtTypeConfig,OnEvtTypeConfig)
ON_COMMAND(ID_CONFIRM, OnConfirm)
ON_COMMAND(ID_DIS_ORD, OnDisOrd)
ON_COMMAND(ID_ORD, OnOrd)
ON_COMMAND(ID_SELECT_NEW, OnSelectNew)
ON_UPDATE_COMMAND_UI(ID_SELECT_NEW, OnUpdateSelectNew)
ON_COMMAND(ID_FILE_PRINT, OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, OnFilePrintPreview)
ON_COMMAND(ID_PRINT_NEW_EVENT, OnPrintNewEvent)
ON_UPDATE_COMMAND_UI(ID_PRINT_NEW_EVENT, OnUpdatePrintNewEvent)
ON_COMMAND(ID_SHOW_MSG_WND, OnShowMsgWnd)
ON_UPDATE_COMMAND_UI(ID_SHOW_MSG_WND, OnUpdateShowMsgWnd)
ON_COMMAND(IDR_SHAPE_RECT, OnShapeRect)
ON_COMMAND(IDR_SHAPE_ELLIPSE, OnShapeEllipse)
ON_COMMAND(IDR_BROWSE, OnBrowse)
ON_COMMAND(ID_VOICE, OnVoice)
ON_UPDATE_COMMAND_UI(ID_VOICE, OnUpdateVoice)
ON_COMMAND(ID_VoiceSet, OnAlarmSet)
	ON_UPDATE_COMMAND_UI(ID_ORD, OnUpdateOrd)
	ON_UPDATE_COMMAND_UI(ID_DIS_ORD, OnUpdateDisOrd)
	ON_UPDATE_COMMAND_UI(ID_SET_OPTINFO, OnUpdateSetOptinfo)
	ON_UPDATE_COMMAND_UI(ID_SET_OPTSHOW, OnUpdateSetOptshow)
	ON_COMMAND(ID_SET_HELP, OnSetHelp)
ON_WM_LBUTTONDBLCLK()
ON_WM_LBUTTONDOWN()
	ON_COMMAND(ID_ALARM_SET, OnAlarmSet)
	ON_WM_CLOSE()
	//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CFormView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CFormView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CFormView::OnFilePrintPreview)

ON_CBN_SELCHANGE(IDC_COMBOX, OnSelchangeCombo)
//  ON_CBN_EDITCHANGE(IDC_COMBOX, OnEditchangeCombo)

ON_MESSAGE(WM_CHECKALL,OnCheckAll)
ON_MESSAGE(WM_XLISTCTRL_CHECKBOX_CLICKED,OnCheck)
ON_COMMAND (IDR_ACK,OnAck)
ON_COMMAND (IDR_ACK_ALL,OnAckAll)
ON_COMMAND (IDR_EXIT,OnExit)
ON_COMMAND (IDR_HIDE_MSG_WND,OnHideMsgWnd)
ON_MESSAGE (WM_MSGWINDBCLICK,OnDbClickMsgWnd)

ON_UPDATE_COMMAND_UI(ID_INDICATOR_NAME, OnUpdateINDICATOR_NAME)
ON_UPDATE_COMMAND_UI(ID_INDICATOR_NAME1, OnUpdateINDICATOR_NAME)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CRealEvView construction/destruction

CRealEvView::CRealEvView()
: CFormView(CRealEvView::IDD)
{
	//{{AFX_DATA_INIT(CRealEvView)
	// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	// TODO: add construction code here
	m_direct = down;
	m_bManulUpdate = 0;
	m_bOnlyNew = true;
	m_bShow= true;
	m_bPrint = 0;
	m_bVoice = 0;
	//m_voiceF=false;
	m_pPreviewList = NULL;
	m_updeF=0;
	crBackG = (COLORREF)RGB(0,0,0);
	Is_Soe=false;
	m_fist=false;
	Is_evtnew=false;
}

CRealEvView::~CRealEvView()
{
}

void CRealEvView::DoDataExchange(CDataExchange* pDX)
{
	CFormView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CRealEvView)
	DDX_Control(pDX, IDC_LIST_EVENT, m_lsEvent);
	//}}AFX_DATA_MAP
}



void CRealEvView::OnInitialUpdate()
{
	CFormView::OnInitialUpdate();
//	m_pWndMsg = new CMsgWnd;
//	m_pWndMsg->Create(m_hWnd);
	//	m_pWndMsg->ShowWindow(SW_SHOW);4.16
	m_bdbInitialed = m_evtdb.InitDbApi("sa","");
///////ltw2006.7.10/////////////////
	int rtn=LSI_RegEvtHwnd(m_hWnd,m_evtdb.m_Evtid); //设置本窗口为接收事件的窗口
	if(rtn<0){
		MessageBox("注册失败");
	}

///////ltw2006.7.10/////////////////

	m_bShow=m_evtdb.IsNeedShow(m_evtdb.evt[m_evtdb.cursor].TypeID,m_evtdb.evt[m_evtdb.cursor].SubtypeID);//BYTE TypeID, BYTE SubtypeID);
	if(m_bShow)
	{
//	m_pWndMsg->ShowWindow(SW_SHOW);//SW_HIDE);
	}
	else
	{
//	m_pWndMsg->ShowWindow(SW_HIDE);
	}
//	m_pWndMsg->m_bStuck = true;
	int cx = GetSystemMetrics(SM_CXSCREEN);
	int cy = GetSystemMetrics(SM_CYSCREEN);
	CRect rectCl ;
//	m_pWndMsg->GetClientRect(&rectCl);
	rectCl.left = 0;
	rectCl.bottom = cy;
	rectCl.top = cy -rectCl.bottom;
	
//	m_pWndMsg->MoveWindow(&rectCl);
	
	GetParentFrame()->RecalcLayout();
	ResizeParentToFit(); 
	InitListCtrl();
	m_bLastIsShow = 0;
//	UpdateWarn();
	InitDropList();
	SetTimer(1111,300,NULL);
	m_evtdb.WriteSelfEvent(EVT_OPT,RUN,"Real:实时事件浏览投入");
	if(g_MDrect == 0)
		m_direct = up;
	else
		m_direct = down;
	Is_evtnew=true;
	
}

/////////////////////////////////////////////////////////////////////////////
// CRealEvView printing

BOOL CRealEvView::OnPreparePrinting(CPrintInfo* pInfo)
{
	return DoPreparePrinting(pInfo);
}

void CRealEvView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
}

void CRealEvView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
}

void CRealEvView::OnPrint(CDC* pDC, CPrintInfo* /*pInfo*/)
{
}

/////////////////////////////////////////////////////////////////////////////
// CRealEvView diagnostics

#ifdef _DEBUG
void CRealEvView::AssertValid() const
{
	CFormView::AssertValid();
}

void CRealEvView::Dump(CDumpContext& dc) const
{
	CFormView::Dump(dc);
}

CRealEvDoc* CRealEvView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CRealEvDoc)));
	return (CRealEvDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CRealEvView message handlers

void CRealEvView::OnSize(UINT nType, int cx, int cy) 
{
	CFormView::OnSize(nType, cx, cy);
	if(!m_lsEvent)return;
	CRect rect;
	GetClientRect(&rect);
	m_lsEvent.MoveWindow(&rect,0);	
}

int CRealEvView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CFormView::OnCreate(lpCreateStruct) == -1)
		return -1;
	return 0;
}

void CRealEvView::OnSelchangeCombo() 
{
	if(!m_evtdb.IsInit())return;
	int cursel = m_pCombo->GetCurSel();
	
	//int ddd = (m_pCombo->GetItemData(cursel));
	WORD type = WORD(LOWORD(m_pCombo->GetItemData(cursel)));
	
	if(HIBYTE(type)==10)
	{if((LOBYTE(type)==0))
	Sleep(1);
	}
	m_evtdb.SetCurDisType(type);
	m_bManulUpdate = 1;
	if(m_fist)
	{
		m_fist=true;
		UpdateWarn();
	}
	m_bManulUpdate = 0;
	//	UpdateWarn();
	
}

#define DELETE_EXCEPTION(e) do { e->Delete(); } while (0)


UINT VoiceAlarm(LPVOID pData)
{
	evtdb* pObject = (evtdb*)pData;
	while(true)
	{
			TRY	
			{
				if(!pObject->m_bInVoice)
					pObject->VoiceWarn();//执行线程
			}
			CATCH_ALL(e)
			{
				TRACE("Error: exception by Hdata Sample\n");
				DELETE_EXCEPTION(e);
				continue;
			}
			END_CATCH_ALL
			Sleep(100);//2006-7-15
	}
	
	return 10l;
}
//////////////////////////////////2004.6.30 zjh//////////////////////////////
UINT OnTimePrint(LPVOID pData)
{
	evtdb* pObject = (evtdb*)pData;
	while(true)
	{
		
		TRY		pObject->PrintWarn();//执行线程
		CATCH_ALL(e)
		{
			TRACE("Error: exception by Hdata Sample\n");
			DELETE_EXCEPTION(e);
			continue;
		}
		END_CATCH_ALL
		Sleep(100);;
	}
	
	return 102;
}
//////////////////////////////////2004.6.30 zjh//////////////////////////////

void CRealEvView::InitListCtrl()
{
	CXListCtrl * pList = (CXListCtrl *)GetDlgItem(IDC_LIST_EVENT);
	
	//pList->SetBkColor(COLORREF(RGB(227,201,245)));crBackG
	pList->SetBkColor(COLORREF(crBackG));
	CFont font;

	VERIFY(font.CreateFont(
		-20,                        // nHeight
		0,                         // nWidth
		0,                         // nEscapement
		0,                         // nOrientation
		FW_BLACK,                 // nWeight
		FALSE,                     // bItalic
		FALSE,                     // bUnderline
		0,                         // cStrikeOut
		DEFAULT_CHARSET,              // nCharSet
		OUT_DEFAULT_PRECIS,        // nOutPrecision
		CLIP_DEFAULT_PRECIS,       // nClipPrecision
		DEFAULT_QUALITY,           // nQuality
		DEFAULT_PITCH ,  // nPitchAndFamily
		"宋体"));                 // lpszFacename
	pList->SetFont(&font,0);
	
	int w = GetSystemMetrics(0)-10;
	m_lenList=w*48/64;
	
	int colwidths[4] = {5,13,28 };	// sixty-fourths
	
	TCHAR *	lpszHeaders[] = {   _T("确认"),
		_T("时间"),
		_T("事件信息"),
		NULL };
	int i;
	int total_cx = 0;
	LV_COLUMN lvcolumn;
	memset(&lvcolumn, 0, sizeof(lvcolumn));
	
	// add columns
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.fmt = LVCFMT_CENTER;
		lvcolumn.pszText = lpszHeaders[i];
		lvcolumn.iSubItem = i;
//		lvcolumn.cx = (lpszHeaders[i+1] == NULL) ? w - total_cx - 10 : (w * colwidths[i]) / 64;
		lvcolumn.cx =  (w * colwidths[i]) / 64;
		//	if(i==2)lvcolumn.cx+=500;
		total_cx += lvcolumn.cx;
	
		pList->InsertColumn(i, &lvcolumn);
	}
	
	
	// create the image list from bitmap resource
	VERIFY(pList->m_cImageList.Create(IDB_CHECKBOXES1, 16, 3, RGB(255, 0, 255)));
	pList->m_HeaderCtrl.SetImageList(&pList->m_cImageList);
	
	// iterate through header items and attach the image list
	HDITEM hditem;
	
	for (i = 0; i < pList->m_HeaderCtrl.GetItemCount(); i++)
	{
		hditem.mask = HDI_IMAGE | HDI_FORMAT;
		pList->m_HeaderCtrl.GetItem(i, &hditem);
		hditem.fmt |=  HDF_IMAGE;
		if (i == 0 )
			hditem.iImage = MyHeaderCtrl1_UNCHECKED_IMAGE;
		else  
			hditem.iImage = MyHeaderCtrl1_NO_IMAGE;
		
		pList->m_HeaderCtrl.SetItem(i, &hditem);
	}
	
	memset(&lvcolumn, 0, sizeof(lvcolumn));
	
	// set the format again - must do this twice or first column does not get set
	for (i = 0; ; i++)
	{
		if (lpszHeaders[i] == NULL)
			break;
		
		lvcolumn.mask = LVCF_FMT | LVCF_SUBITEM;
		//		lvcolumn.fmt = (i == 1 ) ? LVCFMT_LEFT : LVCFMT_CENTER;
		lvcolumn.fmt = LVCFMT_CENTER;
		lvcolumn.iSubItem = i;
		pList->SetColumn(i, &lvcolumn);
	}
	pList->CreateTipL();

	pThread=AfxBeginThread(VoiceAlarm,&m_evtdb,THREAD_PRIORITY_BELOW_NORMAL,0,0,NULL);	
	pThreadPrint=AfxBeginThread(OnTimePrint,&m_evtdb,THREAD_PRIORITY_BELOW_NORMAL,0,0,NULL);//2004.6.30 zjh	
}

void CRealEvView::UpdateWarn()
{
	int TypeID,SubtypeID;

⌨️ 快捷键说明

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