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

📄 zone.cpp

📁 一个完整的数字硬盘录像机系统软件
💻 CPP
字号:
#include "stdafx.h"
#include "GtMpeg.h"
#include "Zone.h"
#include "GtMpegWnd.h"

IMPLEMENT_SERIAL(CZone, CObject, 1)
//////////////////////////////////////////
//
//////////////////////////////////////////
void CZone::StartRecord()
{
   if(m_nRecordTimer==0)
   {
	  m_nStartTicks=GetTickCount();
   }
}
//////////////////////////////////////////
//
//////////////////////////////////////////
void CZone::StopRecord(BOOL bForce/*=FALSE*/)
{
	 if(m_nStartTicks==-1)
		 return;
	 CGtMpegWnd* pWnd=(CGtMpegWnd*)theApp.m_pMainWnd;
	 if(bForce)
	 {
         m_nStartTicks=-1;
		 pWnd->StopTimerRecord(m_nBindChunnel,m_nSort);
	 }
	 else
	 {
		 int nCurTicks = GetTickCount();
		 if ((nCurTicks - m_nStartTicks)>=theApp.m_nAlarmRecordTimer)//1分=60000毫秒
		 {
             m_nStartTicks=-1;
			 pWnd->StopTimerRecord(m_nBindChunnel,m_nSort);
		 }
	 }
}
//////////////////////////////////////////
//
//////////////////////////////////////////
void   CZone::StartExitDelay()
{
   if(!m_bExitDelay)
   {
	 m_bExitDelay=TRUE;
	 m_nStartExitDelayTicks=GetTickCount();
	 if(m_nExitTimer>0)
	 {
		 CString sMsg;
		 sMsg=GetZoneTxt();
		 sMsg+=",准备布防";
		 CGtMpegWnd* pWnd=(CGtMpegWnd*)theApp.m_pMainWnd;
		 pWnd->m_cMsgListBox.AddString(sMsg);
	 }
   }
}
//////////////////////////////////////////
//
//////////////////////////////////////////
void   CZone::EndExitDelay()
{
   if(m_bExitDelay)
   {
	 int nCurTicks = GetTickCount();
	 sndPlaySound(GetAppPath()+"Sound\\进入.wav",SND_ASYNC );
	 if ((nCurTicks - m_nStartExitDelayTicks)>=(m_nExitTimer*1000))//1分=60000毫秒
	 {
		CGtMpegWnd* pWnd=(CGtMpegWnd*)theApp.m_pMainWnd;
		CString sMsg;
		sMsg=m_sZoneTxt;
		sMsg+="布防完毕!";
		pWnd->m_cMsgListBox.AddString(sMsg+"\t");
		pWnd->WriteAlarmInfo(m_nBindChunnel,m_nSort,4,COleDateTime::GetCurrentTime());
		m_bStates2=TRUE;
		m_bExitDelay=FALSE;
		pWnd->OpenZoneAlarm(this);
	    POSITION nPos=pWnd->m_lstEnterDelayZone.GetHeadPosition();
	    while(nPos)
		{
	       POSITION OldPos=nPos;
		   CZone *pTmpZone=pWnd->m_lstEnterDelayZone.GetNext(nPos);
		   if(pTmpZone==this)
		   {
		    pWnd->m_lstEnterDelayZone.RemoveAt(OldPos);
			break;
		   }
		}
		m_nStartExitDelayTicks=-1;
		pWnd->SaveAlarmSet();
	 }
   }
}
//////////////////////////////////////////
//
//////////////////////////////////////////
void   CZone::StartEnterDelay()
{
   if(!m_bEnterDelay)
   {
	 m_bEnterDelay=TRUE;
	 m_nStartEnterDelayTicks=GetTickCount();
	 if(m_nEnterTimer>0)
	 {
		 CString sMsg;
		 sMsg=GetZoneTxt();
		 sMsg+=",准备撤防";
		 CGtMpegWnd* pWnd=(CGtMpegWnd*)theApp.m_pMainWnd;
		 pWnd->m_cMsgListBox.AddString(sMsg);
	 }
   }
}
//////////////////////////////////////////
//
//////////////////////////////////////////
void   CZone::EndEnterDelay()
{
   CGtMpegWnd* pWnd=(CGtMpegWnd*)theApp.m_pMainWnd;
   if(m_bEnterDelay)
   {
     if(m_nType==7)
	 {
		 int nCurTicks = GetTickCount();
		 sndPlaySound(GetAppPath()+"Sound\\进入.wav",SND_ASYNC );
		 if ((nCurTicks - m_nStartEnterDelayTicks)>=(m_nEnterTimer*1000))//1分=60000毫秒
		 {
		    CString sMsg;
			sMsg=m_sZoneTxt;
		    sMsg+="撤防完毕!";
			m_bStates2=FALSE;
			m_bEnterDelay=FALSE;
		    pWnd->m_cMsgListBox.AddString(sMsg+"\t");
			pWnd->OpenZoneAlarm(this);
	        m_nStartEnterDelayTicks=-1;
		    pWnd->SaveAlarmSet();
		 }
		 return;
	 }
	 if(m_bStates)
	 {
		 int nCurTicks = GetTickCount();
		 sndPlaySound(GetAppPath()+"Sound\\进入.wav",SND_ASYNC );
		 if ((nCurTicks - m_nStartEnterDelayTicks)>=(m_nEnterTimer*1000))//1分=60000毫秒
		 {
	        CGtMpegWnd* pWnd=(CGtMpegWnd*)theApp.m_pMainWnd;
			pWnd->ZoneAlarm(this);
			m_bEnterDelay=FALSE;
	        m_nStartEnterDelayTicks=-1;
		 }
	 }
	 else
	 {
		CString sMsg;
		sMsg=m_sZoneTxt;
		sMsg+="解除";
		pWnd->m_cMsgListBox.AddString(sMsg+"\t");
		pWnd->WriteAlarmInfo(m_nBindChunnel,m_nSort,4,COleDateTime::GetCurrentTime());
	    m_nStartEnterDelayTicks=-1;
	    POSITION nPos=pWnd->m_lstEnterDelayZone.GetHeadPosition();
	    while(nPos)
		{
	       POSITION OldPos=nPos;
		   CZone *pTmpZone=pWnd->m_lstEnterDelayZone.GetNext(nPos);
		   if(pTmpZone==this)
		   {
		    pWnd->m_lstEnterDelayZone.RemoveAt(OldPos);
			break;
		   }
		}
		m_bEnterDelay=FALSE;
	 }
   }
}

//////////////////////////////////////////
//
//////////////////////////////////////////
void CZone::Serialize(CArchive& ar)
{
	CObject::Serialize(ar);
	if (ar.IsStoring())
	{
	  ar << (DWORD)m_nBindChunnel;
	  ar << (DWORD)m_nSort;
      ar << (DWORD)m_nBindSecondary;
      ar << (DWORD)m_nBindChannel;
      ar << (DWORD)m_bStates;
      ar << m_sZoneTxt;
	  ar << (DWORD)m_nRecordTimer;
	  ar << (DWORD)m_nType;
	  ar << m_sTouchTxt;
	  ar << (DWORD)m_nExitTimer;
	  ar << (DWORD)m_nEnterTimer;
	  ar << (DWORD)m_nBindChunnel2;
      ar << (DWORD)m_nBindSecondary2;
	  ar << (DWORD)m_nBelong;
	  ar << (DWORD)m_nCtrlWay;
	  ar << (DWORD)m_bStates2;
	  ar << (DWORD)m_bStates3;
	  ar << (DWORD)m_nTmp2;
	  ar << (DWORD)m_nTmp3;
	  ar << m_sTmp1;
	  ar << m_stmp2;
	  ar << m_sTmp3;
	  for(int i=0;i<16;i++)
	     ar << m_Zone[i];
	}
	else
	{
	  DWORD temp;
	  ar >> temp; m_nBindChunnel=temp;
	  ar >> temp;m_nSort=temp;
	  ar >> temp; m_nBindSecondary=temp;
	  ar >> temp; m_nBindChannel=temp;
	  ar >> temp; m_bStates=temp;
      ar >> m_sZoneTxt;
	  ar >> temp; m_nRecordTimer=temp;
	  ar >> temp;m_nType=temp;
	  ar >> m_sTouchTxt;
	  ar >> temp;m_nExitTimer=temp;
	  ar >> temp;m_nEnterTimer=temp;
	  ar >> temp;m_nBindChunnel2=temp;
      ar >> temp;m_nBindSecondary2=temp;
	  ar >> temp;m_nBelong=temp;
	  ar >> temp;m_nCtrlWay=temp;
	  ar >> temp;m_bStates2=temp;
	  ar >> temp;m_bStates3=temp;
	  ar >> temp;m_nTmp2=temp;
	  ar >> temp;m_nTmp3=temp;
	  ar >> m_sTmp1;
	  ar >> m_stmp2;
	  ar >> m_sTmp3;
	  for(int i=0;i<16;i++)
	  {
	     ar >> temp;
	     m_Zone[i]=temp;
	  }
	}
}

⌨️ 快捷键说明

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