📄 vqcwinview.cpp
字号:
// vqcwinView.cpp : implementation of the CVqcwinView class
//
#include "stdafx.h"
#include "vqcwin.h"
#include "vqcwinDoc.h"
#include "vqcwinView.h"
#include "dlgViewSoe.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CVqcwinView
IMPLEMENT_DYNCREATE(CVqcwinView, CView)
BEGIN_MESSAGE_MAP(CVqcwinView, CView)
//{{AFX_MSG_MAP(CVqcwinView)
ON_WM_PAINT()
ON_UPDATE_COMMAND_UI(IDM_ZB1MX1, OnUpdateZbMxSelect)
ON_WM_CREATE()
ON_WM_TIMER()
ON_WM_DESTROY()
ON_COMMAND(IDM_VIEWRECORD, OnViewrecord)
ON_COMMAND(IDM_ClearData, OnClearData)
ON_COMMAND(IDM_ManClearLock, OnManClearLock)
ON_UPDATE_COMMAND_UI(IDM_Fjt, OnUpdateVqcDevice)
ON_UPDATE_COMMAND_UI(IDM_ZB1MX2, OnUpdateZbMxSelect)
ON_UPDATE_COMMAND_UI(IDM_ZB2MX1, OnUpdateZbMxSelect)
ON_UPDATE_COMMAND_UI(IDM_ZB2MX2, OnUpdateZbMxSelect)
ON_UPDATE_COMMAND_UI(IDM_ZB3MX1, OnUpdateZbMxSelect)
ON_UPDATE_COMMAND_UI(IDM_ZB3MX2, OnUpdateZbMxSelect)
ON_UPDATE_COMMAND_UI(IDM_ZB4MX1, OnUpdateZbMxSelect)
ON_UPDATE_COMMAND_UI(IDM_ZB4MX2, OnUpdateZbMxSelect)
ON_UPDATE_COMMAND_UI(IDM_ZB5MX1, OnUpdateZbMxSelect)
ON_UPDATE_COMMAND_UI(IDM_ZB5MX2, OnUpdateZbMxSelect)
ON_UPDATE_COMMAND_UI(IDM_ZB6MX1, OnUpdateZbMxSelect)
ON_UPDATE_COMMAND_UI(IDM_ZB6MX2, OnUpdateZbMxSelect)
ON_UPDATE_COMMAND_UI(IDM_DKQ1, OnUpdateVqcDevice)
ON_UPDATE_COMMAND_UI(IDM_DKQ2, OnUpdateVqcDevice)
ON_UPDATE_COMMAND_UI(IDM_DKQ3, OnUpdateVqcDevice)
ON_UPDATE_COMMAND_UI(IDM_DKQ4, OnUpdateVqcDevice)
ON_UPDATE_COMMAND_UI(IDM_DKQ5, OnUpdateVqcDevice)
ON_UPDATE_COMMAND_UI(IDM_DKQ6, OnUpdateVqcDevice)
ON_UPDATE_COMMAND_UI(IDM_DRQ1, OnUpdateVqcDevice)
ON_UPDATE_COMMAND_UI(IDM_DRQ2, OnUpdateVqcDevice)
ON_UPDATE_COMMAND_UI(IDM_DRQ3, OnUpdateVqcDevice)
ON_UPDATE_COMMAND_UI(IDM_DRQ4, OnUpdateVqcDevice)
ON_UPDATE_COMMAND_UI(IDM_DRQ5, OnUpdateVqcDevice)
ON_UPDATE_COMMAND_UI(IDM_DRQ6, OnUpdateVqcDevice)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CVqcwinView construction/destruction
CVqcwinView::CVqcwinView()
{
// TODO: add construction code here
VQCDisp = NULL;
}
CVqcwinView::~CVqcwinView()
{
}
BOOL CVqcwinView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CView::PreCreateWindow(cs);
}
void CVqcwinView::DispLockStatusAndFjtAndDrqProc(int sx, int sy, CPaintDC *dc)
{
char szText[256];
int ox,oy;
int i,j;
CFont currFont;
CFont *pOldFont;
VQCZB_DBS *zb;
VQCMUXI_DBS *mx;
VQCZB_DBS *link_zb;
VQCMUXI_DBS *link_mx;
currFont.CreateFont(16,8,0,0,
FW_NORMAL,
FALSE,FALSE,FALSE,
ANSI_CHARSET,
OUT_DEFAULT_PRECIS,
OUT_DEFAULT_PRECIS,
DEFAULT_QUALITY,
DEFAULT_PITCH|FF_MODERN,
"宋体");
pOldFont = dc->SelectObject(&currFont);
zb = &(VQCDisp->ZB[VQCDisp->currDispZbNo]);
mx = &(VQCDisp->ZB[VQCDisp->currDispZbNo].MX[VQCDisp->currDispMxNo]);
ox = sx;
oy = sy;
wsprintf(szText, "总的VQC状况: 第%d季节; 日/累计动作次数=%d/%d; ",
VQCDisp->globalDef.currSeasonNo+1,
VQCDisp->actDayTimes,
VQCDisp->actTotalTimes);
if (VQCDisp->lockReasonStatus){
strcat(szText,"被闭锁! 原因:");
if (VQCDisp->lockReasonStatus & LOCK_TIMES_OVER) strcat(szText,"超过总的限定动作次数,");
if (VQCDisp->lockReasonStatus & LOCK_BH) strcat(szText,"有保护闭锁,");
if (VQCDisp->lockReasonStatus & LOCK_YX) strcat(szText,"有遥信闭锁,");
if (VQCDisp->lockReasonStatus & LOCK_YC) strcat(szText,"有遥测闭锁,");
if (VQCDisp->lockReasonStatus & LOCK_REMOTE) strcat(szText,"远方请求退出,");
if (VQCDisp->lockReasonStatus & LOCK_LOCAL) strcat(szText,"就地处于退出");
}
dc->TextOut(ox, oy, szText, strlen(szText));
oy += 20;
/*?? */
wsprintf(szText, "当前母线状况: ");
if (zb->linkZBNum>1)wsprintf(&szText[strlen(szText)], "%d台主变并列运行; ",zb->linkZBNum);
if (mx->lockReasonStatus){
strcat(szText,"有闭锁! 原因:");
if (mx->lockReasonStatus & LOCK_MX_TIMES_OVER) strcat(szText,"超过总的限定动作次数,");
if (mx->lockReasonStatus & LOCK_MX_BH) strcat(szText,"有保护闭锁,");
if (mx->lockReasonStatus & LOCK_MX_YX) strcat(szText,"有遥信闭锁,");
if (mx->lockReasonStatus & LOCK_MX_YC) strcat(szText,"有遥测闭锁,");
if (mx->lockReasonStatus & LOCK_MX_ACTING)
if (zb->adjustNeedLockTime>0)
wsprintf(&szText[strlen(szText)],"调节中需闭锁%d秒,",zb->adjustNeedLockTime);
else wsprintf(&szText[strlen(szText)],"相邻VQC调节中,");
if (mx->lockReasonStatus & LOCK_MX_NOTRUN) strcat(szText,"没有运行,");
if (mx->lockReasonStatus & LOCK_MX_STOP) strcat(szText,"VQC被退出,");
if (mx->lockReasonStatus & LOCK_MX_NOTLINK) strcat(szText,"与主变连接断开,");
if (mx->lockReasonStatus & LOCK_MX_VALUE_OVER) strcat(szText,"UQ 到达封锁区域,");
if (mx->lockReasonStatus & LOCK_MX_FORBIDUPU) strcat(szText,"电压不能上调,");
if (mx->lockReasonStatus & LOCK_MX_FORBIDDOWNU) strcat(szText,"电压不能下调,");
}
else strcat(szText,"正常!");
//wsprintf(&szText[strlen(szText)]," time=%d,",VQCDisp->globalDef.runTime);
dc->TextOut(ox, oy, szText, strlen(szText));
oy += 20;
wsprintf(szText, "%d#主变%d#母线 VQC子模块的可用设备状况:", VQCDisp->currDispZbNo+1,VQCDisp->currDispMxNo+1);
dc->TextOut(ox, oy, szText, strlen(szText));
oy += 20;
strcpy(szText, "设备");
dc->TextOut(ox, oy, szText, strlen(szText));
strcpy(szText, "类型");
dc->TextOut(ox, oy+16, szText, strlen(szText));
ox += 60;
strcpy(szText, "日/累");
dc->TextOut(ox, oy, szText, strlen(szText));
strcpy(szText, "计动作");
dc->TextOut(ox, oy+16, szText, strlen(szText));
ox += 60;
strcpy(szText, "拒动");
dc->TextOut(ox, oy, szText, strlen(szText));
strcpy(szText, "次数");
dc->TextOut(ox, oy+16, szText, strlen(szText));
ox += 40;
strcpy(szText, "闭锁");
dc->TextOut(ox, oy, szText, strlen(szText));
strcpy(szText, "状态");
dc->TextOut(ox, oy+16, szText, strlen(szText));
ox += 40;
strcpy(szText, "需恢复");
dc->TextOut(ox, oy, szText, strlen(szText));
strcpy(szText, "的时间");
dc->TextOut(ox, oy+16, szText, strlen(szText));
ox += 60;
strcpy(szText, "保护");
dc->TextOut(ox, oy, szText, strlen(szText));
strcpy(szText, "状态");
dc->TextOut(ox, oy+16, szText, strlen(szText));
ox += 40;
strcpy(szText, "拒动");
dc->TextOut(ox, oy, szText, strlen(szText));
strcpy(szText, "状态");
dc->TextOut(ox, oy+16, szText, strlen(szText));
ox += 40;
strcpy(szText, "超出");
dc->TextOut(ox, oy, szText, strlen(szText));
strcpy(szText, "次数");
dc->TextOut(ox, oy+16, szText, strlen(szText));
ox += 40;
strcpy(szText, "停用");
dc->TextOut(ox, oy, szText, strlen(szText));
strcpy(szText, "状态");
dc->TextOut(ox, oy+16, szText, strlen(szText));
ox += 40;
strcpy(szText, "闭锁");
dc->TextOut(ox, oy, szText, strlen(szText));
strcpy(szText, "遥信");
dc->TextOut(ox, oy+16, szText, strlen(szText));
ox += 40;
strcpy(szText, "不参");
dc->TextOut(ox, oy, szText, strlen(szText));
strcpy(szText, "与VQC");
dc->TextOut(ox, oy+16, szText, strlen(szText));
ox += 50;
strcpy(szText, "对电压");
dc->TextOut(ox, oy, szText, strlen(szText));
strcpy(szText, "影响");
dc->TextOut(ox+5, oy+16, szText, strlen(szText));
ox += 50;
strcpy(szText, "对无功");
dc->TextOut(ox, oy, szText, strlen(szText));
strcpy(szText, "影响");
dc->TextOut(ox+5, oy+16, szText, strlen(szText));
ox += 70;
strcpy(szText, "名称及其它状态"); //动作时间,不能合或分等
dc->TextOut(ox, oy+9, szText, strlen(szText));
ox = sx;
oy += 36;
dc->MoveTo(ox,oy);
dc->LineTo(ox+900,oy);
oy += 4;
if (zb->pFatherVQC->globalDef.DevControlMode!= DEVMODE_ONLY_DRQ){
// link_mx = mx->linkMX[i];
for (i=0;i<zb->linkZBNum;i++){
link_zb = zb->linkZB[i];
ox = sx;
strcpy(szText, "分接头");
dc->TextOut(ox, oy, szText, strlen(szText));
ox += 60;
wsprintf(szText, "%d/%d",link_zb->fjtActDayTimes,link_zb->fjtActTotalTimes);
dc->TextOut(ox, oy, szText, strlen(szText));
ox += 60;
wsprintf(szText, "%d",link_zb->fjtRejectTimes);
dc->TextOut(ox, oy, szText, strlen(szText));
ox += 40;
if (link_zb->fjtLockReasonStatus & 0x3fff){
strcpy(szText, "闭锁");
dc->TextOut(ox, oy, szText, strlen(szText));
}
ox += 40;
if (link_zb->fjtActNeedLockTime>0){
wsprintf(szText, "%d秒",link_zb->fjtActNeedLockTime);
dc->TextOut(ox, oy, szText, strlen(szText));
}
ox += 60;
if (link_zb->lockReasonStatus & LOCK_ZB_BH){
strcpy(szText, "闭锁");
dc->TextOut(ox, oy, szText, strlen(szText));
}
ox += 40;
if (link_zb->fjtLockReasonStatus & LOCK_FJT_REJECT){
strcpy(szText, "闭锁");
dc->TextOut(ox, oy, szText, strlen(szText));
}
ox += 40;
if (link_zb->fjtLockReasonStatus & LOCK_FJT_TIMES_OVER){
strcpy(szText, "闭锁");
dc->TextOut(ox, oy, szText, strlen(szText));
}
ox += 40;
if (link_zb->lockReasonStatus & LOCK_ZB_NOTRUN){
strcpy(szText, "闭锁");
dc->TextOut(ox, oy, szText, strlen(szText));
}
ox += 40;
if (link_zb->fjtLockReasonStatus & LOCK_FJT_YX){
strcpy(szText, "闭锁");
dc->TextOut(ox, oy, szText, strlen(szText));
}
ox += 40;
if (link_zb->fjtLockReasonStatus & LOCK_FJT_MANACT){
strcpy(szText, " 是");
dc->TextOut(ox, oy, szText, strlen(szText));
}
ox += 50;
sprintf(szText, "%.3f",link_zb->DU);
dc->TextOut(ox, oy, szText, strlen(szText));
ox += 50;
sprintf(szText, "%.3f",link_zb->DQ);
dc->TextOut(ox, oy, szText, strlen(szText));
ox += 70;
link_zb->FjtYtJTRec.GetName(szText);
wsprintf(&szText[strlen(szText)], "(yk:%d); ", link_zb->FjtYtJTRec.GetYtObjNo(TRUE));
if (link_zb->fjtLockReasonStatus & LOCK_FJT_ILOCK){
strcat(szText,"异常负载!");
}
if (link_zb->fjtLockReasonStatus & LOCK_FJT_DWINVALID){
strcat(szText,"非法档位!");
}
if (link_zb->fjtLockReasonStatus & LOCK_FJT_UP){
strcat(szText,"不能上调!");
}
if (link_zb->fjtLockReasonStatus & LOCK_FJT_DOWN){
strcat(szText,"不能下调!");
}
dc->TextOut(ox, oy, szText, strlen(szText));
ox += 80;
oy += 20;
}
}
for (i=0;i<mx->linkMXNum;i++){
link_mx = mx->linkMX[i];
for (j=0;j<link_mx->DRQNum;j++){
ox = sx;
strcpy(szText, "电容器");
dc->TextOut(ox, oy, szText, strlen(szText));
ox += 60;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -