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

📄 curvedynamicdialog.cpp

📁 远程视频监控系统最新程序代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// CurveDynamicDialog.cpp : implementation file
//

#include "stdafx.h"
#include "Operat.h"
#include "CurveDynamicDialog.h"
#include "mmsystem.h"
#include "HistoryData.h"
#include <math.h>
#include <afxmt.h>

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CCurveDynamicDialog dialog
CCurveDynamicFlow m_nCurveDynamicFlow;
CCriticalSection m_nTimerCritSect;

short  m_nCurGroupNo=0;
short m_nCount=0;


CCurveDynamicDialog::CCurveDynamicDialog(CWnd* pParent /*=NULL*/)
	: CDialog(CCurveDynamicDialog::IDD, pParent)
{
	//{{AFX_DATA_INIT(CCurveDynamicDialog)
	m_nEditName1 = _T("");
	m_nEditName2 = _T("");
	m_nEditName3 = _T("");
	m_nEditName4 = _T("");
	m_nEditCurTime = _T("");
	m_nEditUpper1 = _T("");
	m_nEditUpper2 = _T("");
	m_nEditUpper3 = _T("");
	m_nEditUpper4 = _T("");
	m_nEditDown1 = _T("");
	m_nEditDown2 = _T("");
	m_nEditDown3 = _T("");
	m_nEditDown4 = _T("");
	m_nEditCurAnaval1 = _T("");
	m_nEditCurAnaval2 = _T("");
	m_nEditCurAnaval3 = _T("");
	m_nEditCurAnaval4 = _T("");
	//}}AFX_DATA_INIT
}


void CCurveDynamicDialog::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CCurveDynamicDialog)
	DDX_Control(pDX, IDC_SPINUpper4, m_nSpinUpper4);
	DDX_Control(pDX, IDC_SPINUpper3, m_nSpinUpper3);
	DDX_Control(pDX, IDC_SPINUpper2, m_nSpinUpper2);
	DDX_Control(pDX, IDC_SPINUpper1, m_nSpinUpper1);
	DDX_Control(pDX, IDC_SPINDown4, m_nSpinDown4);
	DDX_Control(pDX, IDC_SPINDown3, m_nSpinDown3);
	DDX_Control(pDX, IDC_SPINDown2, m_nSpinDown2);
	DDX_Control(pDX, IDC_SPINDown1, m_nSpinDown1);
	DDX_Control(pDX, IDC_LIST1, m_nList);
	DDX_Text(pDX, IDC_EDIT_NAME1, m_nEditName1);
	DDX_Text(pDX, IDC_EDIT_NAME2, m_nEditName2);
	DDX_Text(pDX, IDC_EDIT_NAME3, m_nEditName3);
	DDX_Text(pDX, IDC_EDIT_NAME4, m_nEditName4);
	DDX_Text(pDX, IDC_EDIT_CURTIME, m_nEditCurTime);
	DDX_Text(pDX, IDC_EDIT_UPPER1, m_nEditUpper1);
	DDX_Text(pDX, IDC_EDIT_UPPER2, m_nEditUpper2);
	DDX_Text(pDX, IDC_EDIT_UPPER3, m_nEditUpper3);
	DDX_Text(pDX, IDC_EDIT_UPPER4, m_nEditUpper4);
	DDX_Text(pDX, IDC_EDIT_DOWN1, m_nEditDown1);
	DDX_Text(pDX, IDC_EDIT_DOWN2, m_nEditDown2);
	DDX_Text(pDX, IDC_EDIT_DOWN3, m_nEditDown3);
	DDX_Text(pDX, IDC_EDIT_DOWN4, m_nEditDown4);
	DDX_Text(pDX, IDC_EDIT_CURANAVAL1, m_nEditCurAnaval1);
	DDX_Text(pDX, IDC_EDIT_CURANAVAL2, m_nEditCurAnaval2);
	DDX_Text(pDX, IDC_EDIT_CURANAVAL3, m_nEditCurAnaval3);
	DDX_Text(pDX, IDC_EDIT_CURANAVAL4, m_nEditCurAnaval4);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CCurveDynamicDialog, CDialog)
	//{{AFX_MSG_MAP(CCurveDynamicDialog)
	ON_WM_DESTROY()
	ON_LBN_SELCHANGE(IDC_LIST1, OnSelchangeList1)
	ON_WM_PAINT()
	ON_BN_CLICKED(IDC_BUTTONAPPLY, OnButtonapply)
	ON_MESSAGE(SPLITLINEXCHANGE_MESSAGE,OnCurveFlowSplitXChange)
	ON_BN_CLICKED(IDC_BUTTON_PRINT, OnButtonPrint)
	ON_NOTIFY(UDN_DELTAPOS, IDC_SPINDown1, OnDeltaposSPINDown1)
	ON_NOTIFY(UDN_DELTAPOS, IDC_SPINDown2, OnDeltaposSPINDown2)
	ON_NOTIFY(UDN_DELTAPOS, IDC_SPINDown3, OnDeltaposSPINDown3)
	ON_NOTIFY(UDN_DELTAPOS, IDC_SPINDown4, OnDeltaposSPINDown4)
	ON_NOTIFY(UDN_DELTAPOS, IDC_SPINUpper1, OnDeltaposSPINUpper1)
	ON_NOTIFY(UDN_DELTAPOS, IDC_SPINUpper2, OnDeltaposSPINUpper2)
	ON_NOTIFY(UDN_DELTAPOS, IDC_SPINUpper3, OnDeltaposSPINUpper3)
	ON_NOTIFY(UDN_DELTAPOS, IDC_SPINUpper4, OnDeltaposSPINUpper4)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CCurveDynamicDialog message handlers

BOOL CCurveDynamicDialog::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization heren
	InitData();
    InitCtrl();
	InitCurveFlow();
	ResetCtrl(0);	
	ResetCurveFlow(0);
	m_nTimeID=timeSetEvent(3000,50,CCurveDynamicDialog::TimeCallbackName,1,TIME_PERIODIC);
	ASSERT(m_nTimeID!=0);
//	SetWindowPos(NULL,30,50,0,0,TRUE);
	this->CenterWindow(NULL);
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CCurveDynamicDialog::TimeCallbackName(unsigned int nParm1, unsigned int nParm2, unsigned long nParm3, unsigned long nParm4, unsigned long nParm5)
{
  CHistoryData pHistoryData;
  CCurveDrawStruct *pCurveDrawStruct;
  float nCurAnaval;
  time_t nTime;
  m_nCount++;
  m_nTimerCritSect.Lock();
  {
   short nIndex=0;
   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;
	  pHistoryData.GetCurHistData(pCurveDrawStruct->nNo,&nCurAnaval,&nTime);
	  m_nCurveDynamicFlow.SetPos(nIndex,nCurAnaval,0,nTime);
	  nIndex++;
   }	  
   m_nCurveDynamicFlow.Go();
  }
  m_nTimerCritSect.Unlock();
}

void CCurveDynamicDialog::OnDestroy() 
{
	CDialog::OnDestroy();
	m_nList.SetCurSel(0);
	OnSelchangeList1();
	// TODO: Add your mes	m_nList.SetCurSel(0);
	timeKillEvent(m_nTimeID);
	CCurveDrawStruct *pCurveDrawStruct;
	for(int i=0;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)&&(pCurveDrawStruct->nNo<MAX_HIST_POINT))
		   {
		       pCurveDrawStruct->nDown=m_nCurDown[i][j];
			   pCurveDrawStruct->nUpper=m_nCurUpper[i][j];
		   }
		}
}

void CCurveDynamicDialog::InitData()
{
   	CCurveDrawStruct *pCurveDrawStruct;
	for(int i=0;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)&&(pCurveDrawStruct->nNo<MAX_HIST_POINT))
		   {
		       m_nCurDown[i][j]=pCurveDrawStruct->nDown;
			   m_nCurUpper[i][j]=pCurveDrawStruct->nUpper;
		   }
		} 
}

void CCurveDynamicDialog::InitCurveFlow()
{    
    m_nCurveDynamicFlow.SetBkFrameColor(m_nCurveCommandSet.nBackColor,m_nCurveCommandSet.nFontBackColor);
    m_nCurveDynamicFlow.SetPrimCompart(m_nCurveCommandSet.nPrimNumX,m_nCurveCommandSet.nPrimNumY,m_nCurveCommandSet.nPrimWidth,PS_SOLID,m_nCurveCommandSet.nPrimColor);
	m_nCurveDynamicFlow.SetSecCompart(m_nCurveCommandSet.nSecondNumX,m_nCurveCommandSet.nSecondNumY,m_nCurveCommandSet.nSecondWidth,PS_SOLID,m_nCurveCommandSet.nSecondColor);
    m_nCurveDynamicFlow.SetXId(m_nCurveCommandSet.nTimeCoordNum,m_nCurveCommandSet.nFontColor,m_nCurveCommandSet.nFontSize,m_nCurveCommandSet.nFontName);
	m_nCurveDynamicFlow.SetTimePigment(m_nCurveCommandSet.nTimeInterval,m_nCurveCommandSet.nTimePixel);
	m_nCurveDynamicFlow.SetSplitLine(PS_SOLID,m_nCurveCommandSet.nIdLineWidth,m_nCurveCommandSet.nIdLineColor);
	CRect nRect(0,0,660,420);
	m_nCurveDynamicFlow.Create(NULL,NULL,WS_CHILD | WS_BORDER | WS_TABSTOP | WS_VISIBLE,nRect,this,IDC_DYNAMICCURVE_FLOW,NULL);
	m_nCurveDynamicFlow.InitCtrl(370,600,10,30,30,20);
	m_nTimeID=0;
}

void CCurveDynamicDialog::ResetCurveFlow(short nGroupNo)
{
	if ((nGroupNo<0)||(nGroupNo>=MAX_CURVE_GROUP)) return;
	short nOldGroupNo=nGroupNo;
	if (m_nCurSystem==1) nGroupNo+=MAX_TURBINE_CURVE;
	CCurveDrawStruct *pCurveDrawStruct;
     float nAnavalArray[MAX_MEMORY_HISTNUM];
	time_t  nTimeArray[MAX_MEMORY_HISTNUM];
	CHistoryData pHistoryData;	 
	AfxGetApp()->BeginWaitCursor();
	CTime nTime;
	nTime=CTime::GetCurrentTime();
	m_nTimerCritSect.Lock();	
	  m_nCurveDynamicFlow.DeleteAllLine();	
	  m_nCurveDynamicFlow.InvalidateCtrl(nTime.GetTime());	
	  short nIndex=0;
	  for (int i=0;i<MAX_CURVE_NUMPERGROUP;i++)
	  {
        pCurveDrawStruct=m_pCurveDrawStruct+(nGroupNo)*MAX_CURVE_NUMPERGROUP+i;
	    if (pCurveDrawStruct->nNo<0) continue;
	    m_nCurveDynamicFlow.AddLine(pCurveDrawStruct->nColor,PS_SOLID,pCurveDrawStruct->nWidth,pCurveDrawStruct->nDown,pCurveDrawStruct->nUpper);
	    short nCount=0;
        pHistoryData.GetMemoryHistAnaval(pCurveDrawStruct->nNo,nAnavalArray,nTimeArray,&nCount);
	    if (nCount>0)
		{       	      
		  m_nCurveDynamicFlow.SetHistoryPos(nIndex,nAnavalArray,nTimeArray,nCount);
	      m_nCurveDynamicFlow.DrawHistoryData();
		  m_nCurveDynamicFlow.SetHistoryPos(nIndex,NULL,NULL,0);
		}		
		nIndex++;
	  }	
    m_nTimerCritSect.Unlock();
    AfxGetApp()->EndWaitCursor();
	nGroupNo=nOldGroupNo;
    m_nCurGroupNo=nGroupNo;
}

void CCurveDynamicDialog::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;
   }
    //for(i=0;i<MAX_CURVE_GROUP;i++) m_nGroupName[i].Empty();
  	
  
   m_nList.SetCurSel(0);
   
   m_nDownArray[0]=&m_nEditDown1;
   m_nDownArray[1]=&m_nEditDown2;
   m_nDownArray[2]=&m_nEditDown3;
   m_nDownArray[3]=&m_nEditDown4;
   /*
   m_nDownArray[4]=&m_nEditDown5;
   m_nDownArray[5]=&m_nEditDown6;
   m_nDownArray[6]=&m_nEditDown7;
   m_nDownArray[7]=&m_nEditDown8;
*/
   m_nUpperArray[0]=&m_nEditUpper1;
   m_nUpperArray[1]=&m_nEditUpper2;
   m_nUpperArray[2]=&m_nEditUpper3;
   m_nUpperArray[3]=&m_nEditUpper4;
   /*
   m_nUpperArray[4]=&m_nEditUpper5;
   m_nUpperArray[5]=&m_nEditUpper6;
   m_nUpperArray[6]=&m_nEditUpper7;
   m_nUpperArray[7]=&m_nEditUpper8;
*/
   m_nNameArray[0]=&m_nEditName1;
   m_nNameArray[1]=&m_nEditName2;
   m_nNameArray[2]=&m_nEditName3;
   m_nNameArray[3]=&m_nEditName4;
   /*
   m_nNameArray[4]=&m_nEditName5;
   m_nNameArray[5]=&m_nEditName6;
   m_nNameArray[6]=&m_nEditName7;
   m_nNameArray[7]=&m_nEditName8;
 */
   m_nCurAnavalArray[0]=&m_nEditCurAnaval1;
   m_nCurAnavalArray[1]=&m_nEditCurAnaval2;
   m_nCurAnavalArray[2]=&m_nEditCurAnaval3;
   m_nCurAnavalArray[3]=&m_nEditCurAnaval4;
   /*
   m_nCurAnavalArray[4]=&m_nEditCurAnaval5;
   m_nCurAnavalArray[5]=&m_nEditCurAnaval6;
   m_nCurAnavalArray[6]=&m_nEditCurAnaval7;
   m_nCurAnavalArray[7]=&m_nEditCurAnaval8;
   */
   m_nButtonID[0]=IDC_BUTTON_COLOR1;
   m_nButtonID[1]=IDC_BUTTON_COLOR2;
   m_nButtonID[2]=IDC_BUTTON_COLOR3;
   m_nButtonID[3]=IDC_BUTTON_COLOR4;
   /*
   m_nButtonID[4]=IDC_BUTTON_COLOR5;
   m_nButtonID[5]=IDC_BUTTON_COLOR6;
   m_nButtonID[6]=IDC_BUTTON_COLOR7;
   m_nButtonID[7]=IDC_BUTTON_COLOR8;
*/
   m_nStaticID[0]=IDC_STATIC_UNIT1;
   m_nStaticID[1]=IDC_STATIC_UNIT2;
   m_nStaticID[2]=IDC_STATIC_UNIT3;
   m_nStaticID[3]=IDC_STATIC_UNIT4;
  /*
   m_nStaticID[4]=IDC_STATIC_UNIT5;
   m_nStaticID[5]=IDC_STATIC_UNIT6;
   m_nStaticID[6]=IDC_STATIC_UNIT7;
   m_nStaticID[7]=IDC_STATIC_UNIT8;
   */
    m_nSpinDown1.SetRange(-10,10);
   m_nSpinDown1.SetPos(10);
 //  m_nSpinDown2.SetBuddy(GetDlgItem(IDC_EDITDOWNBUDDY2));
   m_nSpinDown2.SetRange(-10,10);
   m_nSpinDown2.SetPos(0);
 //  m_nSpinDown3.SetBuddy(GetDlgItem(IDC_EDITDOWNBUDDY3));
   m_nSpinDown3.SetRange(-10,10);
   m_nSpinDown3.SetPos(0);
 //  m_nSpinDown4.SetBuddy(GetDlgItem(IDC_EDITDOWNBUDDY4));
   m_nSpinDown4.SetRange(-10,10);
   m_nSpinDown4.SetPos(0);
   
//   m_nSpinUpper1.SetBuddy(GetDlgItem(IDC_EDITUPPERBUDDY1));
   m_nSpinUpper1.SetRange(-10,10);
   m_nSpinUpper1.SetPos(0);
  // m_nSpinUpper2.SetBuddy(GetDlgItem(IDC_EDITUPPERBUDDY2));
   m_nSpinUpper2.SetRange(-10,10);
   m_nSpinUpper2.SetPos(0);
  // m_nSpinUpper3.SetBuddy(GetDlgItem(IDC_EDITUPPERBUDDY3));
   m_nSpinUpper3.SetRange(-10,10);
   m_nSpinUpper3.SetPos(0);
//   m_nSpinUpper4.SetBuddy(GetDlgItem(IDC_EDITUPPERBUDDY4));
   m_nSpinUpper4.SetRange(-10,10);
   m_nSpinUpper4.SetPos(0);


}

void CCurveDynamicDialog::ResetCtrl(short nGroupNo)
{ 
    if ((nGroupNo<0)||(nGroupNo>=MAX_CURVE_GROUP)) return;
	short nOldGroupNo=nGroupNo;
	if (m_nCurSystem==1) nGroupNo+=MAX_TURBINE_CURVE;
	CCurveDrawStruct *pCurveDrawStruct;
 	CString          nStr;
	CHistoryData     nHistoryData;
  	for (int i=0;i<MAX_CURVE_NUMPERGROUP;i++)
	{
      pCurveDrawStruct=m_pCurveDrawStruct+(nGroupNo)*MAX_CURVE_NUMPERGROUP+i;
	  m_nCurAnavalArray[i]->Empty();
	  if ((pCurveDrawStruct->nNo<0)||(pCurveDrawStruct->nNo>=MAX_HIST_POINT))
	  {

⌨️ 快捷键说明

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