📄 curvehistorydlg.cpp
字号:
nCurPos++;
}
else
{
nState=BREAK_POINT;
}
m_nCurveHistFlow.SetPos(nIndex,nAnavalArray[i][nCurPos],nState,nTimeArray[0]);
nIndex++;
}
nEndTime+=nTimeInterval;
m_nCurveHistFlow.Go(TRUE);
}
*/
}
m_nCurveHistFlow.Invalidate(TRUE);
CTime nTime;
m_nBeginTime=m_nCurveHistFlow.GetStartTime();
m_nEndTime=m_nCurveHistFlow.GetEndTime();
nTime=m_nBeginTime;
CString nStr;
nStr.Format("从%-2d/%-2d:%-2d:%-2d ",nTime.GetMonth(),nTime.GetDay(),nTime.GetHour(),nTime.GetMinute());
GetDlgItem(IDC_BUTTON_BEGINDATE)->SetWindowText(nStr);
nStr.Empty();
OnCurveFlowSplitXChange(0,0);
return 0;
}
LRESULT CCurveHistoryDlg::OnCurveFlowBackMove(WPARAM wParam,LPARAM lParam)
{
CHistoryData pHistoryData;
CCurveDrawStruct *pCurveDrawStruct;
float nAnavalArray[MAX_CURVE_NUMPERGROUP][32];
long nTimeArray[32];
float nCurAnaval;
short nCount,nSum;
nCount=(short)wParam;
if ((nCount<=0)||(nCount>32)) return 0;
// nCount=1;
if (lParam==HIST_MOVE_CURVE)
{
m_nEndTime=m_nCurveHistFlow.GetEndTime();
m_nBeginTime=m_nCurveHistFlow.GetStartTime();
ReDraw();
}
else
{
/*
time_t nTime;
short nTimeInterval=m_nCurveHistFlow.GetIntervalTime()/60;
nTime=m_nCurveHistFlow.GetStartTime();
short nGroupNo;
nGroupNo=m_nList.GetCurSel();
if ((nGroupNo<0)||(nGroupNo>MAX_CURVE_NUMPERGROUP))return 0;
for (int i=0;i<MAX_CURVE_NUMPERGROUP;i++)
{
pCurveDrawStruct=m_pCurveDrawStruct+nGroupNo*MAX_CURVE_NUMPERGROUP+i;
if (pCurveDrawStruct->nNo<0) continue;
pHistoryData.GetHistDataArray(pCurveDrawStruct->nNo,nTimeInterval,nCount,nAnavalArray[i],nTimeArray);
}
long nEndTime;
nEndTime=m_nCurveHistFlow.GetEndTime();
for(i=0;i<nCount;i++)
{
short nIndex=0,nCurPos=0,nState;
for(int j=0;j<MAX_CURVE_NUMPERGROUP;j++)
{
pCurveDrawStruct=m_pCurveDrawStruct+(nGroupNo)*MAX_CURVE_NUMPERGROUP+j;
if (pCurveDrawStruct->nNo<0) continue;
if (nTimeArray[nCurPos]==nEndTime)
{
nState=NORMAL_POINT;
nCurPos++;
}
else
{
nState=BREAK_POINT;
}
m_nCurveHistFlow.SetPos(nIndex,nAnavalArray[i][nCurPos],nState,nTimeArray[0]);
nIndex++;
}
nEndTime-=nTimeInterval;
m_nCurveHistFlow.Go(FALSE);
}
*/
}
m_nCurveHistFlow.Invalidate(TRUE);
CTime nTime;
m_nBeginTime=m_nCurveHistFlow.GetStartTime();
m_nEndTime=m_nCurveHistFlow.GetEndTime();
nTime=m_nBeginTime;
CString nStr;
nStr.Format("从%-2d/%-2d:%-2d:%-2d ",nTime.GetMonth(),nTime.GetDay(),nTime.GetHour(),nTime.GetMinute());
GetDlgItem(IDC_BUTTON_BEGINDATE)->SetWindowText(nStr);
nStr.Empty();
OnCurveFlowSplitXChange(0,0);
return 0;
}
void CCurveHistoryDlg::OnButton1()
{
// TODO: Add your control notification handler code here
}
void CCurveHistoryDlg::OnButtonExitHist()
{
// TODO: Add your control notification handler code here
CDialog::OnCancel();
}
void CCurveHistoryDlg::OnButtonPrintHist()
{
// TODO: Add your control notification handler code here
time_t nStartTime,nEndTime,nCurTime;
float nCurAnaval[MAX_CURVE_NUMPERGROUP];
float nAnavalArray[MAX_CURVE_NUMPERGROUP][610];
long nTimeArray[MAX_CURVE_NUMPERGROUP][610];
CCurveDrawStruct *pCurveDrawStruct;
CString sName[MAX_CURVE_NUMPERGROUP];
AfxGetApp()->BeginWaitCursor();
CHistoryData pHistoryData;
short nIndex=0;
nStartTime=m_nCurveHistFlow.GetStartTime();
nEndTime =m_nCurveHistFlow.GetEndTime();
short nTimeInterval=m_nCurveHistFlow.GetIntervalTime();
short nSum=(nEndTime-nStartTime)/nTimeInterval+1;
nCurTime=m_nCurveHistFlow.GetCurSplitTime();
for (int i=0;i<MAX_CURVE_NUMPERGROUP;i++)
{
short nCount=0;
pCurveDrawStruct=m_pCurveDrawStruct+m_nCurGroupNo*MAX_CURVE_NUMPERGROUP+i;
if ((pCurveDrawStruct->nNo<0)||(pCurveDrawStruct->nNo>=MAX_HIST_POINT)) continue;
pHistoryData.GetName(pCurveDrawStruct->nNo,&sName[i]);
nTimeArray[nIndex][0]=nEndTime;
for(int j=1;j<nSum;j++)
{
nTimeArray[nIndex][j]=nTimeArray[nIndex][j-1]-nTimeInterval;
}
nCount=pHistoryData.GetHistDataArray(pCurveDrawStruct->nNo,nTimeInterval,nSum,nAnavalArray[nIndex],nTimeArray[nIndex]);
nCurAnaval[nIndex]=0;
for(j=0;j<nCount;j++)
{
if (pHistoryData.InTimeRange(nCurTime,nTimeArray[nIndex][j],nTimeInterval))
{
nCurAnaval[nIndex]=nAnavalArray[nIndex][j];
break;
}
}
m_nCurveHistFlow.PreparePrint(nIndex,nCount,nTimeArray[nIndex],nAnavalArray[nIndex],(LPSTR)(LPCTSTR)sName[i]);
nIndex++;
}
m_nCurveHistFlow.Printer(nStartTime,nEndTime,nCurTime,nCurAnaval);
m_nCurveHistFlow.EndPrint();
AfxGetApp()->EndWaitCursor();
}
void CCurveHistoryDlg::OnButtonApplyhist()
{
// TODO: Add your control notification handler code here
short nHour=m_nSpinTimeLen.GetPos();
short nMinute=m_nSpinTimeMinute.GetPos();
BOOL bChange=FALSE;
int nLen=nHour*3600+nMinute*60;
if (nLen>86400)
{
char nStr[64];
sprintf(nStr,"曲线的最大的时间长度不能大于24小时");
AfxMessageBox(nStr);
return;
}
else
{
if (nLen==0)
{
char nStr[64];
sprintf(nStr,"曲线的最大的时间长度不能为0");
AfxMessageBox(nStr);
return;
}
}
time_t nTempTime=m_nEndTime;
m_nEndTime=m_nBeginTime+nLen;
if (nTempTime!=m_nEndTime) bChange=TRUE;
CTime nTime;
nTime=CTime::GetCurrentTime();
if (m_nEndTime>nTime.GetTime())
{
char nStr[64];
sprintf(nStr,"曲线的结束时间不能大于当前时间");
m_nSpinTimeLen.SetPos(m_nOldTimeLen/3600);
m_nSpinTimeMinute.SetPos((m_nOldTimeLen%3600)/60);
AfxMessageBox(nStr);
return;
}
AfxGetApp()->BeginWaitCursor();
CCurveDrawStruct *pCurveDrawStruct;
UpdateData(TRUE);
for(int i=0;i<MAX_CURVE_NUMPERGROUP;i++)
{
pCurveDrawStruct=m_pCurveDrawStruct+m_nCurGroupNo*MAX_CURVE_NUMPERGROUP+i;
if ((pCurveDrawStruct->nNo<0)||(pCurveDrawStruct->nNo>=MAX_HIST_POINT)) continue;
float nTemp;
m_nDownArray[i]->TrimLeft();
m_nDownArray[i]->TrimRight();
nTemp=(float)atof((LPSTR)(LPCTSTR)*m_nDownArray[i]);
if (fabs(nTemp-pCurveDrawStruct->nDown)>1e-2)
{
bChange=TRUE;
pCurveDrawStruct->nDown=nTemp;
break;
}
m_nUpperArray[i]->TrimLeft();
m_nUpperArray[i]->TrimRight();
nTemp=(float)atof((LPSTR)(LPCTSTR)*m_nUpperArray[i]);
if (fabs(nTemp-pCurveDrawStruct->nUpper)>1e-2)
{
bChange=TRUE;
pCurveDrawStruct->nUpper=nTemp;
break;
}
};
if (nLen!=m_nOldTimeLen)
{
bChange=TRUE;
m_nOldTimeLen=nLen;
}
else if (m_nBeginTime!=(m_nEndTime-nLen*3600))
{
bChange=TRUE;
}
if (bChange)
{
int nTimeInterval;
nTimeInterval=nLen/600;
m_nCurveHistFlow.SetTimePigment(nTimeInterval,1);
ReDraw();
}
GetDlgItem(IDC_BUTTON_APPLYHIST)->EnableWindow(FALSE);
AfxGetApp()->EndWaitCursor();
}
void CCurveHistoryDlg::InitCtrl()
{
CCurveDrawStruct *pCurveDrawStruct;
int i;
if (m_nCurSystem==0) i=0;
else i=MAX_TURBINE_CURVE;
for(;i<MAX_CURVE_GROUP;i++)
{
for(int j=0;j<MAX_CURVE_NUMPERGROUP;j++)
{
pCurveDrawStruct=m_pCurveDrawStruct+i*MAX_CURVE_NUMPERGROUP+j;
if (pCurveDrawStruct->nNo>=0)
{
m_nList.AddString(m_nCurveGroupName[i]);
break;
}
}
if (j==MAX_CURVE_NUMPERGROUP) break;
}
m_nList.SetCurSel(0);
m_nDownArray[0]=&m_nDownHist1;
m_nDownArray[1]=&m_nDownHist2;
m_nDownArray[2]=&m_nDownHist3;
m_nDownArray[3]=&m_nDownHist4;
m_nUpperArray[0]=&m_nUpperHist1;
m_nUpperArray[1]=&m_nUpperHist2;
m_nUpperArray[2]=&m_nUpperHist3;
m_nUpperArray[3]=&m_nUpperHist4;
m_nNameArray[0]=&m_nNameHist1;
m_nNameArray[1]=&m_nNameHist2;
m_nNameArray[2]=&m_nNameHist3;
m_nNameArray[3]=&m_nNameHist4;
m_nCurAnavalArray[0]=&m_nAnavalHist1;
m_nCurAnavalArray[1]=&m_nAnavalHist2;
m_nCurAnavalArray[2]=&m_nAnavalHist3;
m_nCurAnavalArray[3]=&m_nAnavalHist4;
m_nButtonID[0]=IDC_BUTTON_HISTITEM1;
m_nButtonID[1]=IDC_BUTTON_HISTITEM2;
m_nButtonID[2]=IDC_BUTTON_HISTITEM3;
m_nButtonID[3]=IDC_BUTTON_HISTITEM4;
m_nStaticID[0]=IDC_STATIC_UNIT_HIST1;
m_nStaticID[1]=IDC_STATIC_UNIT_HIST2;
m_nStaticID[2]=IDC_STATIC_UNIT_HIST3;
m_nStaticID[3]=IDC_STATIC_UNIT_HIST4;
m_nSpinTimeLen.SetBuddy(&m_nEditTimeLen);
m_nSpinTimeLen.SetRange(0,24);
m_nSpinTimeLen.SetPos(0);
m_nOldTimeLen=1800;
m_nSpinTimeMinute.SetBuddy(&m_nEditTimeMinute);
m_nSpinTimeMinute.SetRange(0,30);
UDACCEL nUdaccel;
nUdaccel.nSec=1;
nUdaccel.nInc=30;
m_nSpinTimeMinute.SetAccel(1,&nUdaccel);
m_nSpinTimeMinute.SetPos(30);
m_nSpinDown1.SetRange(-10,10);
m_nSpinDown1.SetPos(0);
m_nSpinDown2.SetRange(-10,10);
m_nSpinDown2.SetPos(0);
m_nSpinDown3.SetRange(-10,10);
m_nSpinDown3.SetPos(0);
m_nSpinDown4.SetRange(-10,10);
m_nSpinDown4.SetPos(0);
m_nSpinUpper1.SetRange(-10,10);
m_nSpinUpper1.SetPos(0);
m_nSpinUpper2.SetRange(-10,10);
m_nSpinUpper2.SetPos(0);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -