📄 realevvi.cpp
字号:
// RealEvView.cpp : implementation of the CRealEvView class
//
#include "stdafx.h"
#include "RealEv.h"
#include "afxpriv.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_WM_LBUTTONDBLCLK()
ON_WM_LBUTTONDOWN()
ON_COMMAND(ID_ALARM_SET, OnAlarmSet)
//}}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;
}
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","");
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.top = cy -rectCl.bottom;
rectCl.bottom = cy;
m_pWndMsg->MoveWindow(&rectCl);
GetParentFrame()->RecalcLayout();
ResizeParentToFit();
InitListCtrl();
m_bLastIsShow = 0;
// UpdateWarn();
InitDropList();
SetTimer(1111,300,NULL);
}
/////////////////////////////////////////////////////////////////////////////
// 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;
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 pObject->VoiceWarn();//执行线程
CATCH_ALL(e)
{
TRACE("Error: exception by Hdata Sample\n");
DELETE_EXCEPTION(e);
continue;
}
END_CATCH_ALL
}
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
}
return 102;
}
//////////////////////////////////2004.6.30 zjh//////////////////////////////
void CRealEvView::InitListCtrl()
{
CXListCtrl * pList = (CXListCtrl *)GetDlgItem(IDC_LIST_EVENT);
pList->SetBkColor(COLORREF(RGB(0,0,0)));
CFont font;
font.CreateFont(-18,0,0,0,400,0,0,0,1,OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,
DEFAULT_PITCH,"宋体" );
pList->SetFont(&font,0);
int w = GetSystemMetrics(0)-10;
m_lenList=w*48/64;
int colwidths[4] = {5,13,25 }; // 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;
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);
}
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;
COLORREF crText;
COLORREF crBk = (COLORREF)RGB(0,0,0);
if(!m_bdbInitialed)return;
/* m_evtdb.GetSafeDays(m_safedays);
CString msg;
msg.Format("%d",m_safedays);
WPARAM wParm = 0;
ATOM atom = GlobalAddAtom(msg.GetBuffer(msg.GetLength()));
msg.ReleaseBuffer();
::PostMessage(HWND_BROADCAST,nMsgWarn,wParm,(LPARAM)atom);
*/
//更新数据
m_evtdb.ReadAllEvt();
//打印新事件
//if(m_bPrint)m_evtdb.PrintWarn();
//if(m_bVoice)m_evtdb.VoiceWarn();
m_evtdb.SelectNewEvt();//选择一条新记录,
int nItem = 0, nSubItem= 0;
int chg=m_evtdb.IsDisRecChanged();
if(m_evtdb.nEvt <=0)return;
if(m_updeF==0)
{
if(chg==0)
{
if(!m_bManulUpdate)
return;
}
}
m_bLastIsShow = 1;
crText = m_evtdb.GetWarnColor(m_evtdb.evt[m_evtdb.cursor].TypeID,m_evtdb.evt[m_evtdb.cursor].SubtypeID);
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_evtdb.GetDTMStr(m_evtdb.evt[m_evtdb.cursor].Time,m_evtdb.evt[m_evtdb.cursor].MilliSec,dt);
sprintf(dt,"%s %s",dt,m_evtdb.evt[m_evtdb.cursor].Describe);
m_pWndMsg->SetText(dt,crText);
//m_pWndMsg->ShowWindow(SW_HIDE);//4.16
}
ShowWindow(SW_RESTORE);
g_New=1;
m_updeF=1;
// CWindowDC dc(this); // device context for painting
// dc.GetClipBox(&rectUpdate);
// if(rectUpdate.bottom==0) return;
m_updeF=0;
// if((m_evtdb.m_iCurEvtDisType!=0xffff)&&(chg!=2)) return;
m_lsEvent.LockWindowUpdate(); // lock window updates while filling list
int nEvent = m_evtdb.nEvt;
if(!m_lsEvent.DeleteAllItems())return;
// Invalidate();
DWORD type;
if(m_direct == down) //顺序
{
if((WORD)(m_evtdb.m_iCurEvtDisType)!=0xffff)
{
for(int i =0;i<m_evtdb.nEvt;i++)
{
type = MAKEWORD(m_evtdb.evt[i].SubtypeID,m_evtdb.evt[i].TypeID);
if(m_evtdb.evt[i].TypeID == 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[nItem].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 =0;i<m_evtdb.nEvt;i++)
{
// if(m_evtdb.evt[i].prcF !=1) continue;
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();
TypeID = m_evtdb.evt[i].TypeID;
SubtypeID = m_evtdb.evt[i].SubtypeID;
crText = m_evtdb.GetWarnColor(TypeID,SubtypeID);//
nSubItem ++ ;
m_lsEvent.SetItemText(nItem,nSubItem,m_evtdb.evt[i].Describe,crText,crBk);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -