📄 dlgsetevtopt.cpp
字号:
// DlgSetEvtOpt.cpp : implementation file
//
#include "stdafx.h"
#include "realev.h"
#include "DlgSetEvtOpt.h"
#include "RealEvView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDlgSetEvtOpt dialog
#define EVENT_NUM 8
#define EVENT_NUM_SYS 15
#define EVENT_NUM_OPT 20
#define EVENT_NUM_YC 5
#define EVENT_NUM_YX 15
#define EVENT_NUM_SOE 12
#define EVENT_NUM_YK 2
#define EVENT_NUM_YT 3
#define EVENT_NUM_DZ 4
//事件类型描述
char* EventType[]={"系统日志","操作日志","遥测事件","遥信事件","SOE事件",
"遥控事件","遥调事件","定值事件","全部"};
//系统日志
char* SysRzEvent[]={"系统退出","系统启动","厂站投入","通道连接成功","控制操作","控制设置","修改数据",
"其它","通道连接失败","前置机切换为主备自动","前置机切换为主备手动","前置机切换为均流方式","厂站退出","数据源错误","人工操作提示(请操作)","全部"};
//操作日志描述id=1
char* OptRzEvent[]={"程序退出","程序启动","厂站投入","开启告警音效","确认告警音效","通道连接成功",
"确认所有闪烁及音效","确认本页闪烁及音效","控制操作","控制设置","修改数据","其它","屏蔽告警音效","通道连接失败","前置机切换为主备自动",
"前置机切换为主备手动","前置机切换为均流方式","厂站退出","数据源错误","手动追忆数据","全部"};
//遥测事件描述id=10
char* YcEvent[]={"恢复正常","越上限","越下限","越上上限","越下下限","全部"};
//遥信事件描述id=11
char* YxEvent[]={"合->分","分->合","保护复归","保护动作","事故","旁路替代","直流信号消失","直流信号产生","变位限值或事故限值","告警消失",
"告警产生","小电流接地消失","小电流接地产生","其它信号消失","其它信号产生","全部"};
//SOE事件描述id=12
char* SoeEvent[]={"合->分","分->合","保护复归","保护动作","直流信号消失","直流信号产生","告警消失",
"告警产生","小电流接地消失","小电流接地产生","其它信号消失","其它信号产生","全部"};
//遥控事件描述id=13
char* YkEvent[]={"合->分","分->合","全部"};
//遥调事件描述id=14
char* YtEvent[]={"上升","下降","急停","全部"};
//定值事件描述id=15
char* DzEvent[]={"定值","保护复归","手工对时","定值错误","全部"};
CDlgSetEvtOpt::CDlgSetEvtOpt(CWnd* pParent /*=NULL*/)
: CDialog(CDlgSetEvtOpt::IDD, pParent)
{
//{{AFX_DATA_INIT(CDlgSetEvtOpt)
m_Str = _T("");
m_IsShow = FALSE;
//}}AFX_DATA_INIT
}
void CDlgSetEvtOpt::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDlgSetEvtOpt)
DDX_Control(pDX, IDC_COMBO2, m_subComb);
DDX_Control(pDX, IDC_COMBO1, m_comb);
DDX_Text(pDX, IDC_EDIT1, m_Str);
DDX_Check(pDX, IDC_CHECK1, m_IsShow);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDlgSetEvtOpt, CDialog)
//{{AFX_MSG_MAP(CDlgSetEvtOpt)
ON_CBN_SELCHANGE(IDC_COMBO1, OnSelEvtType)
ON_CBN_SELCHANGE(IDC_COMBO2, OnSelEvtTypeSub)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDlgSetEvtOpt message handlers
BOOL CDlgSetEvtOpt::OnInitDialog()
{
CDialog::OnInitDialog();
for(int i=0;i<EVENT_NUM;i++)
m_comb.AddString(EventType[i]);
m_comb.SetCurSel(-1);//初始化为全部
m_CurNo=-1;
LongFlag = false;
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CDlgSetEvtOpt::OnOK()
{
// TODO: Add extra validation here
UpdateData(true);
CRealEvView* pView=((CRealEvView*)((CFrameWnd*)AfxGetApp()->m_pMainWnd)->GetActiveView());
if(pView->m_evtdb.m_EvtOpt&&pView->m_evtdb.m_pEvtOpt)
{
if((m_CurNo>=0)&&(m_CurNo<pView->m_evtdb.m_pEvtOpt->userec))
{
TxtPut(pView->m_evtdb.m_EvtOpt[m_CurNo].EvtOptExp);
if(LongFlag)
return;
pView->m_evtdb.m_pEvtOpt->recattr[m_CurNo].changed=1;
if(m_IsShow) pView->m_evtdb.m_EvtOpt[m_CurNo].EveTypeID=1;
else pView->m_evtdb.m_EvtOpt[m_CurNo].EveTypeID=0;
}
}
CDialog::OnOK();
}
void CDlgSetEvtOpt::OnSelEvtType()
{
UpdateData(true);
int index=m_comb.GetCurSel();
int i=0;
m_subComb.ResetContent();
switch(index)
{
case 0:
for(i=0;i<EVENT_NUM_SYS;i++)
m_subComb.AddString(SysRzEvent[i]);
break;
case 1:
for(i=0;i<EVENT_NUM_OPT;i++)
m_subComb.AddString(OptRzEvent[i]);
break;
case 2:
for(i=0;i<EVENT_NUM_YC;i++)
m_subComb.AddString(YcEvent[i]);
break;
case 3:
for(i=0;i<EVENT_NUM_YX;i++)
m_subComb.AddString(YxEvent[i]);
break;
case 4:
for(i=0;i<EVENT_NUM_SOE;i++)
m_subComb.AddString(SoeEvent[i]);
break;
case 5:
for(i=0;i<EVENT_NUM_YK;i++)
m_subComb.AddString(YkEvent[i]);
m_subComb.SetCurSel(EVENT_NUM_YK);
break;
case 6:
for(i=0;i<EVENT_NUM_YT;i++)
m_subComb.AddString(YtEvent[i]);
break;
case 7:
for(i=0;i<EVENT_NUM_DZ;i++)
m_subComb.AddString(DzEvent[i]);
break;
// case 8:
// m_subComb.AddString("全部");
// m_subComb.SetCurSel(0);
default:
break;
}
m_subComb.SetCurSel(-1);
}
void CDlgSetEvtOpt::OnSelEvtTypeSub()
{
UpdateData(true);
m_Str="";
m_CurNo=-1;
m_IsShow=false;
char TypeID=m_comb.GetCurSel();
char SubtypeID=m_subComb.GetCurSel();
CRealEvView* pView=((CRealEvView*)((CFrameWnd*)AfxGetApp()->m_pMainWnd)->GetActiveView());
if(!pView->m_evtdb.m_EvtOpt) return ;
for(int i = 0;i< pView->m_evtdb.m_nEvtTypeCounts;i++)
{
if(pView->m_evtdb.m_pEvtType[i].TypeID==TypeID)
{
if(pView->m_evtdb.m_pEvtType[i].SubtypeID==SubtypeID)
{
TxtGet( pView->m_evtdb.m_EvtOpt[i].EvtOptExp);
m_CurNo=i;
if(pView->m_evtdb.m_EvtOpt[i].EveTypeID) m_IsShow=true;
}
}
}
UpdateData(false);
}
void CDlgSetEvtOpt::TxtGet(char *buf)
{
memset(m_buf,0,LEN_BUF);
memcpy(m_buf,buf,LEN_BUF);
for(int i=0;i<LEN_BUF;i++)
{
if(m_buf[i]==0x00) break;
if(m_buf[i]==0x3C)
if(m_buf[i+1]==0x62)
if(m_buf[i+2]==0x72)
{
if(m_buf[i+3]==0x3E)
{
memcpy(&m_buf[i],&m_buf[i+2],LEN_BUF-i-2);
m_buf[i]=0x0d;
m_buf[i+1]=0x0a;
}
}
}
m_Str.Format("%s", m_buf);
}
void CDlgSetEvtOpt::TxtPut(char *buf)
{
// memset(m_buf,0,LEN_BUF);
int length = m_Str.GetLength();
sprintf(m_buf,"%s",m_Str);
// memcpy(m_buf,buf,LEN_BUF);
for(int i=0;i<LEN_BUF;i++)
{
if(m_buf[i]==0x00) break;
if(m_buf[i]==0x0d)
{
if(m_buf[i+1]==0x0a)
{
memcpy(&m_buf[i+2],&m_buf[i],LEN_BUF-i-2);
m_buf[i]=0x3C;
m_buf[i+1]=0x62;
m_buf[i+2]=0x72;
m_buf[i+3]=0x3E;
length = length+2;//0D,0A转化成<br>总长度加2
}
}
}
if(length>=512)
{
LongFlag = true;
AfxMessageBox("注意,输入长度不能超过512字符!");
}
else
{
LongFlag = false;
memcpy(buf,m_buf,LEN_BUF);
}
// sprintf(buf,"%s",m_Str);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -