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

📄 realevvi.cpp

📁 电力监控系统 实时告警处理程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
					nItem++;
				}
			}
			
		}//end show all
		CRect rect;
		m_lsEvent.GetSubItemRect(0,0,LVIR_BOUNDS,rect);
		int iHeight=rect.Height ()*(nItem-1);
		CSize size;
		size.cy =iHeight;
		size.cx=0;
		m_lsEvent.Scroll (size);
	}//end 顺序
	
	else //逆序
	{
		if((WORD)(m_evtdb.m_iCurEvtDisType)!=0xffff)
		{
			for(int i =m_evtdb.nEvt-1 ;i>=0;i--)
			{
				type = MAKEWORD(m_evtdb.evt[i].SubtypeID,m_evtdb.evt[i].TypeID);
				if(type == (WORD)(m_evtdb.m_iCurEvtDisType))
				{
					if(m_bOnlyNew)
					{
						if(m_evtdb.evt[i].AffirmF == 1)
						{
							continue;
						}
					}
					m_bShow=m_evtdb.IsNeedShow(m_evtdb.evt[i].TypeID,m_evtdb.evt[i].SubtypeID);//BYTE TypeID, BYTE SubtypeID);
					if(m_bShow)
					{
						crText = m_evtdb.GetWarnColor(m_evtdb.evt[i].TypeID,m_evtdb.evt[i].SubtypeID);
						nSubItem= 0; 
						m_lsEvent.InsertItem(nItem,str,crText,crBk);
						m_lsEvent.SetItemData(nItem,i);
						if(m_evtdb.evt[i].AffirmF ==0)
						{
							m_lsEvent.SetEnabled(nItem,1);
							m_lsEvent.SetCheckbox(nItem, nSubItem, 0);
							str = "N";
							m_lsEvent.SetItemText(nItem,nSubItem,str,crText,crBk);
						}
						else
						{
							m_lsEvent.SetCheckbox(nItem,nSubItem,1);
							m_lsEvent.SetEnabled(nItem,FALSE);
							str = "Y";
							m_lsEvent.SetItemText(nItem,nSubItem,str,crText,crBk);
						}
						nSubItem ++;
						m_evtdb.GetDTMStr(m_evtdb.evt[i].Time,m_evtdb.evt[i].MilliSec,dt);
						str = dt;
						m_lsEvent.SetItemText(nItem,nSubItem,str,crText,crBk);
						str.Empty();
						nSubItem ++;
						m_lsEvent.SetItemText(nItem,nSubItem,m_evtdb.evt[i].Describe,crText,crBk);	
						nItem++;
					}
				}
			}
		}
		else//显示所有
		{
			nItem = 0;
			//////过虑。。。
			for(int i =m_evtdb.nEvt-1 ;i>=0;i--)
			{
				//	if(m_evtdb.evt[i].prcF !=1) continue;
				if(m_bOnlyNew )//&& m_evtdb.evt[i].IfShow
				{
					if(m_evtdb.evt[i].AffirmF == 1)
					{
						continue;
					}
				}
				
				m_bShow=m_evtdb.IsNeedShow(m_evtdb.evt[i].TypeID,m_evtdb.evt[i].SubtypeID);//BYTE TypeID, BYTE SubtypeID);
				if(m_bShow)
				{
					crText = m_evtdb.GetWarnColor(m_evtdb.evt[i].TypeID,m_evtdb.evt[i].SubtypeID);
					nSubItem = 0;
					m_lsEvent.InsertItem(nItem,str,crText,crBk);
					m_lsEvent.SetItemData(nItem,i);
					if(m_evtdb.evt[i].AffirmF ==0)
					{
						m_lsEvent.SetEnabled(nItem,1);
						m_lsEvent.SetCheckbox(nItem, nSubItem, 0);
						str = "N";
						m_lsEvent.SetItemText(nItem,nSubItem,str,crText,crBk);
					}
					else
					{
						m_lsEvent.SetCheckbox(nItem,nSubItem,1);
						m_lsEvent.SetEnabled(nItem,FALSE);
						str = "Y";
						m_lsEvent.SetItemText(nItem,nSubItem,str,crText,crBk);
					}
					nSubItem ++;
					m_evtdb.GetDTMStr(m_evtdb.evt[i].Time,m_evtdb.evt[i].MilliSec,dt);
					str = dt;
					m_lsEvent.SetItemText(nItem,nSubItem,str,crText,crBk);
					str.Empty();
					
					nSubItem ++	;		// 
					m_lsEvent.SetItemText(nItem,nSubItem,m_evtdb.evt[i].Describe,crText,crBk);
					nItem++;
				}
				
				
			}
		}
	}//end 顺序

	//打印新事件
	//if(m_bPrint)m_evtdb.PrintWarn();
	//if(m_bVoice)m_evtdb.VoiceWarn();
	m_lsEvent.UnlockWindowUpdate();	
	Invalidate();
	
}
void CRealEvView::InitDropList()
{
	if(!m_evtdb.IsInit())return;
	CMainFrame *pFrame = (CMainFrame*)AfxGetApp()->m_pMainWnd;
	m_pCombo = (CComboBox*) &(pFrame->m_wndToolBar.m_combobox);
	m_pCombo->ResetContent();
	m_pCombo->AddString("用户定义事件");
	
	
	WORD type = 0xffff;
	DWORD dwItemData;
	m_pCombo->SetItemData(0,type);
	
	int nCounts = m_evtdb.GetEvtTypeCounts();
	if(nCounts <=0)return;
	WORD *pType = new WORD[nCounts];
	CString *pNames =new CString[nCounts];
	COLORREF *pColor = new COLORREF[nCounts];
	m_evtdb.GetEventType(pNames,pType,pColor);
	int j=0;
	for(int i = 1;i<nCounts+1;i++)
	{
		type = (WORD)(*pType); 
		dwItemData = MAKELONG(type,0);
		type = LOWORD(dwItemData);
		
		if(m_evtdb.GetIfShow(i-1))
		{	
			j++;
			m_pCombo->AddString(*pNames);
			m_pCombo->SetItemData(j,dwItemData);
			
		}
		
		pNames++;
		pType++;
		
	}
	pNames -=nCounts;
	pType -= nCounts;
	m_pCombo->SetCurSel(0);
	m_pCombo->UpdateData(true);
	OnSelchangeCombo();
	if(!pNames)
		delete []pNames;
	if(!pType)
		delete []pType;
	m_evtdb.SetCurDisType(0xffff);
}

void CRealEvView::OnTimer(UINT nIDEvent) 
{
	if(nIDEvent == 1111)
		UpdateWarn();
	CFormView::OnTimer(nIDEvent);
}
/*//发送消息给yhui
void CRealEvView::OnTest() 
{
CString msg;
msg = "msg";
msg.ReleaseBuffer();
WPARAM wParm = 111;
ATOM atom = GlobalAddAtom("xxxxasofnas");
::SendMessage(HWND_BROADCAST,nMsgWarn,wParm,(LPARAM)atom);
}
*/
void CRealEvView::OnCheck(WPARAM w,LPARAM p)
{
	int nItem  = w;
	if(nItem <0)return;
	int ord = int(m_lsEvent.GetItemData(nItem));
	m_evtdb.cursor = ord;//改成itemdata
	
	if(m_evtdb.evt[ord].AffirmF != 0)return;
	
	bool rtn= m_evtdb.AckEvent();
	if(rtn)	
	{
		m_lsEvent.SetEnabled(nItem,FALSE);
		m_lsEvent.SetCheckbox(nItem,0,1);
	}
	else
		m_lsEvent.SetCheckbox(nItem,0,0);
}
void CRealEvView::OnCheckAll(WPARAM w,LPARAM p)
{
	bool rtn;
	int nItemCounts = m_lsEvent.GetItemCount();
	DWORD dwItemData;
	int ord ;
	for(int i = 0;i< nItemCounts;i++)
	{
		dwItemData = m_lsEvent.GetItemData(i);
		ord = LOWORD(dwItemData);
		
		if(1 ==  m_evtdb.evt[ord].AffirmF)continue;
		m_evtdb.cursor = ord;
		rtn= m_evtdb.AckEvent();
		if(rtn)	
		{
			m_lsEvent.SetCheckbox(i,0,1);
			m_lsEvent.SetEnabled(i,FALSE);	
		}
	}
	m_lsEvent.Invalidate();
}

void CRealEvView::OnColor() 
{
	CDlgColor dlg(this,&m_evtdb);
	if(IDOK == dlg.DoModal())
	{
		m_bManulUpdate = 1;
		UpdateWarn();
		m_bManulUpdate = 0;
	}
}


void CRealEvView::OnEvtTypeConfig()
{
	CEvtTypeConfigDlg dlg(this,&m_evtdb);
	dlg.DoModal();
	//	CEvtTypeConfig EvtTypeConfig(this,&m_evtdb);;
		//	EvtTypeConfig.DoModal();
}


void CRealEvView::OnConfirm() 
{
	OnAckAll();	
}

void CRealEvView::OnDisOrd() 
{
	if(m_direct == up)return;
	m_direct = up;	
	m_bManulUpdate = 1;
	UpdateWarn();
	m_bManulUpdate = 0;
}

void CRealEvView::OnOrd() 
{
	if(m_direct == down)return;
	m_direct = down;
	m_bManulUpdate = 1;
	UpdateWarn();
	m_bManulUpdate = 0;
}

void CRealEvView::OnSelectNew() 
{
	if(m_bOnlyNew == 0)m_bOnlyNew=1;
	else m_bOnlyNew = 0;
	m_bManulUpdate = 1;
	UpdateWarn();
	m_bManulUpdate = 0;
}

void CRealEvView::OnUpdateSelectNew(CCmdUI* pCmdUI) 
{
	pCmdUI->SetCheck(m_bOnlyNew?1:0);
}
void CRealEvView::OnPrintNewEvent() 
{
	m_bPrint = m_bPrint?0:1;
	if(m_bPrint)
	{
		m_evtdb.m_printf=true;
	}
	else
		m_evtdb.m_printf=false;
}

void CRealEvView::OnUpdatePrintNewEvent(CCmdUI* pCmdUI) 
{
	pCmdUI->SetCheck(m_bPrint?1:0);
}

void CRealEvView::OnFilePrint() 
{
	if(m_pPreviewList)
	{
		delete m_pPreviewList;
		m_pPreviewList = NULL;
	}
	m_pPreviewList = new CListCtrlPrint;
	CString str1="YH-5000:",str="实时事件";	
	str=str1+str;
	m_pPreviewList->csPageHead = str;
	
    CTime time=CTime::GetCurrentTime();
	str=time.Format("%c");
	m_pPreviewList->csPageFooter =str;
	m_pPreviewList->csPage = "第 %d 页:共 %d 页"; 	m_pPreviewList->pList = &m_lsEvent;
	m_pPreviewList->OnFilePrint();
}

void CRealEvView::OnFilePrintPreview() 
{
	if ( m_lsEvent.GetItemCount()<=0 )
	{
		MessageBox("没有可供预览的记录!");
		return;
	}
	if(m_pPreviewList)
	{
		delete m_pPreviewList;
		m_pPreviewList = NULL;
	}
	m_pPreviewList = new CListCtrlPrint;
	
	CString str1="YH-5000:",str="实时事件";	
	str=str1+str;
	m_pPreviewList->csPageHead = str;
	
    CTime time=CTime::GetCurrentTime();
	str=time.Format("%c");
	m_pPreviewList->csPageFooter =str;
	m_pPreviewList->csPage = "第 %d 页:共 %d 页"; 
	
	m_pPreviewList->pList=&m_lsEvent;
	m_pPreviewList->PrintPreview();
	
}


void CRealEvView::OnAck()
{
	m_evtdb.AckEvent();
}
void CRealEvView::OnAckAll()
{
	m_evtdb.AckAllEvent();
	m_bManulUpdate = 1;
	UpdateWarn();
	m_bManulUpdate = 0;
}
void CRealEvView::OnBrowse()
{ 
	((CMainFrame*)AfxGetMainWnd())->ShowWindow(SW_MAXIMIZE);	
}
void CRealEvView::OnExit()
{
	::SendMessage(((CMainFrame*)AfxGetMainWnd())->m_hWnd,WM_COMMAND,ID_APP_SUSPEND,0);
}
void CRealEvView::OnHideMsgWnd()
{
	m_pWndMsg->ShowWindow(SW_HIDE);
}

void CRealEvView::OnShowMsgWnd() 
{
	if(m_pWndMsg->IsWindowVisible())
	{
		m_pWndMsg->ShowWindow(SW_HIDE);
	}
	else
	{
		m_pWndMsg->ShowWindow(SW_SHOW);
	}
}

void CRealEvView::OnUpdateShowMsgWnd(CCmdUI* pCmdUI) 
{
	pCmdUI->SetCheck(m_pWndMsg->IsWindowVisible());
}

void CRealEvView::OnShapeRect() 
{
	if(m_pWndMsg->m_Shape == ELLIPSEWND)
	{
		m_pWndMsg->DestroyWindow();
		if(NULL!=m_pWndMsg)
			delete m_pWndMsg;
		m_pWndMsg = new CMsgWnd;
		m_pWndMsg->m_Shape = RECTWND;
		m_pWndMsg->m_iWidth = 400;
		m_pWndMsg->m_iHeight = 50;
		m_pWndMsg->Create(m_hWnd);
		m_pWndMsg->m_bStuck = true;
		int cx = GetSystemMetrics(SM_CXSCREEN);
		int cy = GetSystemMetrics(SM_CYSCREEN);
		CRect rectCl ;
		m_pWndMsg->GetClientRect(&rectCl);
		rectCl.top = cy -rectCl.bottom;
		rectCl.bottom = cy;
		m_pWndMsg->MoveWindow(&rectCl);
		//	m_pWndMsg->ShowWindow(SW_SHOW);4.16
		m_pWndMsg->ShowWindow(SW_HIDE);

		m_bManulUpdate = 1;
		UpdateWarn();
		m_bManulUpdate = 0;
	}
}

void CRealEvView::OnShapeEllipse() 
{
	if(m_pWndMsg->m_Shape == RECTWND)
	{
		m_pWndMsg->DestroyWindow();
		if(NULL!=m_pWndMsg)
			delete m_pWndMsg;
		m_pWndMsg = new CMsgWnd;
		m_pWndMsg->m_Shape = ELLIPSEWND;
		m_pWndMsg->m_iWidth = 200;
		m_pWndMsg->m_iHeight = 100;
		m_pWndMsg->Create(m_hWnd);
		m_pWndMsg->m_bStuck = true;
		int cx = GetSystemMetrics(SM_CXSCREEN);
		int cy = GetSystemMetrics(SM_CYSCREEN);
		CRect rectCl ;
		m_pWndMsg->GetClientRect(&rectCl);
		rectCl.left = cx - rectCl.right;
		rectCl.top = cy -rectCl.bottom-20;
		rectCl.bottom = cy-20;
		rectCl.right = cx;
		m_pWndMsg->MoveWindow(&rectCl);
		//	m_pWndMsg->ShowWindow(SW_SHOW);
		m_pWndMsg->ShowWindow(SW_HIDE);
		m_bManulUpdate = 1;
		UpdateWarn();
		m_bManulUpdate = 0;
	}	
}
void CRealEvView::OnDbClickMsgWnd(WPARAM w,LPARAM p)
{
	m_evtdb.AckEvent();
	m_pWndMsg->ShowWindow(SW_HIDE);
}


void CRealEvView::OnVoice() 
{
	m_bVoice = m_bVoice? 0:1;	
	if(m_bVoice)
	{
		m_evtdb.m_voiceF=true;
	}
	else
	{
		m_evtdb.m_voiceF=false;
	}
}

void CRealEvView::OnUpdateVoice(CCmdUI* pCmdUI) 
{
	pCmdUI->SetCheck(m_bVoice?1:0);
}

void CRealEvView::OnUpdateINDICATOR_NAME(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable(TRUE);
}

void CRealEvView::OnUpdateINDICATOR_NAME1(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable(TRUE);
}

void CRealEvView::OnAlarmSet() 
{
	// TODO: Add your command handler code here
	CDiaWarnSet dlg(this,&m_evtdb);
	dlg.DoModal();
	
}

void CRealEvView::OnUpdateOrd(CCmdUI* pCmdUI) 
{
	pCmdUI->SetCheck(m_direct?down:up);
}

void CRealEvView::OnUpdateDisOrd(CCmdUI* pCmdUI) 
{
	pCmdUI->SetCheck(m_direct?up:down);
	
}



void CRealEvView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo) 
{
	
	CFormView::OnPrepareDC(pDC, pInfo);
}

⌨️ 快捷键说明

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