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

📄 gtmpegwnd.cpp

📁 一个完整的数字硬盘录像机系统软件
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	}
}
/////////////////////////////
//
/////////////////////////////
void CGtMpegWnd::OnClose() 
{
     FreeObject();
	 CDialog::OnClose();
}
//////////////////////////////////////////////
//
/////////////////////////////////////////////
void CGtMpegWnd::InitChoiceChannel()
{
  for(int i=0;i<theApp.m_nChannels;i++)
  {
     m_nChannel[i]=0;
	 CButton *pButton=(CButton*)GetDlgItem(IDC_CHANNEL0+i);
	 pButton->SetCheck(m_nChannel[i]);	 
	 if((DWORD)i>=g_dwNumberOfSlots)
		 pButton->EnableWindow(FALSE);
  }
}
////////////////////////////////////////////
//
/////////////////////////////////////////////
void CGtMpegWnd::OpenSlot(UINT id)
{
	DWORD dwSlotNumber = id;
	g_pDevice[dwSlotNumber] = new CDeviceObject(this,dwSlotNumber);
	if (g_pDevice[dwSlotNumber] == NULL)
	{
		AfxMessageBox("Can't Create Object\n");
		return;
	}
	if (g_pDevice[dwSlotNumber]->m_ConfigInfo.iPictureSize == 0) //SIF
	{
		g_pDevice[dwSlotNumber]->m_dwWidth = m_PalSIFPicSize.cx;
		g_pDevice[dwSlotNumber]->m_dwHeight = m_PalSIFPicSize.cy;

	}
	else //QSIF
	{
		g_pDevice[dwSlotNumber]->m_dwWidth = m_PalQSIFPicSize.cx;
		g_pDevice[dwSlotNumber]->m_dwHeight = m_PalQSIFPicSize.cy;

	}
	g_bSlotOpened[dwSlotNumber] = TRUE;
	g_pDevice[dwSlotNumber]->StartDisplay();
}
///////////////////////////////
//
////////////////////////////////
void CGtMpegWnd::OnVideoSetting() 
{
   int nChoiceChannel=-1;
   PauseDisplay();
   for(int i=0;i<theApp.m_nChannels;i++)
   {
      if(m_nChannel[i]==1)
	  {
	    if(nChoiceChannel==-1)
			nChoiceChannel=i;
		else
		{
		   MessageBox("请选择一个频道!");
           RestoreDisplay();
		   return;
		}
	  }
   }
   if(nChoiceChannel==-1)
   {
		MessageBox("请选择一个频道!");
        RestoreDisplay();
		return;
   }
   PauseDisplay();
   CMpegSheet Sheet("视频参数设置");
   CVideoPage VideoPage;
   CColorPage ColorPage;
   VideoPage.SetChannel(nChoiceChannel);
   ColorPage.SetChannel(nChoiceChannel);
   Sheet.AddPage(&VideoPage);
   Sheet.AddPage(&ColorPage);
   if(Sheet.DoModal()==IDOK)
   {
     g_pDevice[nChoiceChannel]->ChangeVideo(); 
	 g_pDevice[nChoiceChannel]->ChangeDisplayColor();
   }
}
///////////////////////////////////////////////////////////////////////////////////////
//
////////////////////////////////////////////////////////////////////////////////////////
void CGtMpegWnd::FreeObject()
{
  CloseComm();
  if(theApp.m_bNetTran)
  {
	delete m_pSocket;
	POSITION nPos=m_ClientList.GetHeadPosition();
	while(nPos!=NULL)
	{
		CClientSocket* pSocket = (CClientSocket*)m_ClientList.GetNext(nPos);
		if (!pSocket->IsAborted())
		{
			pSocket->ShutDown();
			BYTE Buffer[50];
			while (pSocket->Receive(Buffer,50) > 0);
			delete pSocket;
		}
	}
    m_ClientList.RemoveAll();
  }
  if(theApp.m_bAlarm)
  {
	m_lstRecZone.RemoveAll();
	m_lstAlarmSecondary.RemoveAll();
    POSITION nPos=m_lstAlarmChunnel.GetHeadPosition();
	while(nPos!=NULL)
	  delete m_lstAlarmChunnel.GetNext(nPos);
	m_lstAlarmChunnel.RemoveAll();
	m_lstRecZone.RemoveAll();
	m_AlarmSound.Close();
  }
  for(DWORD k=0;k<g_dwNumberOfSlots;k++)
	  CloseSlot(k);
  if(m_pVideoBK!=NULL)
	delete m_pVideoBK;
  if(m_pMenuBK!=NULL)
	delete m_pMenuBK;
  if(m_pLogoObject!=NULL)
	delete m_pLogoObject;
}
///////////////////////////////////////////////////////////////////////////////////////
//
////////////////////////////////////////////////////////////////////////////////////////
void CGtMpegWnd::OnOK() 
{
  PauseDisplay();
  CExitDlg dlg;
  if(dlg.DoModal()==IDCANCEL)
  {
      RestoreDisplay();
	  return;
  }
  if(m_pClientSocket!=NULL)
  {
     CDataMsg Msg;
	 Msg.m_nCommandType=3;
	 SendMsg(m_pClientSocket,&Msg);
     CloseSocket();
  }
  FreeObject();
  CDialog::OnOK();
}
//////////////////////////////////////////////////
//
////////////////////////////////////////////////////
void CGtMpegWnd::AlarmReset()
{
   //BYTE byCommand=0x99;
   //WriteCommCommand(&byCommand,1);
}
//////////////////////////////////////////////////
//
////////////////////////////////////////////////////
BOOL CGtMpegWnd::WriteCommCommand(BYTE byCommand[],int nLen)
{
   BOOL        bWriteStat ;
   DWORD       dwBytesWritten;
   bWriteStat = WriteFile(m_hCom,byCommand,nLen,&dwBytesWritten,&m_OSWrite);
   return bWriteStat;
}
/////////////////////////////////////////////////////////
//nCommandWord=0  开始采集
//nCommandWord=1  停止采集
//nCommandWord=2  冻结
/////////////////////////////////////////////////////////
void CGtMpegWnd::SendCameraCommand(int nCommandWord)
{
   int i;
   switch(nCommandWord)
   {
       case 0:
		     for(i=0;i<theApp.m_nChannels;i++)
			 {
			    if(m_nChannel[i]==1)
				{
				   if(i<(m_nPicNumX*m_nPicNumY))
				   {
	                  CVideoPos* pWnd=(CVideoPos*)GetDlgItem(IDC_VIDEO_POS+i);
				      g_pDevice[i]->StartDisplay();
				   }
				}
			 }
		     break;
	   case 1:
		     for(i=0;i<theApp.m_nChannels/*g_dwNumberOfSlots*/;i++)
			 {
			    if(m_nChannel[i]==1)
				{
		           g_pDevice[i]->StopDisplay();
	               CVideoPos* pWnd=(CVideoPos*)GetDlgItem(IDC_VIDEO_POS+i);
				}
			 }
		     break;
	   case 2:
		     break;
   }
}
/////////////////////////////////////////////////////////
//发送控制指令
/////////////////////////////////////////////////////////
void CGtMpegWnd::SendCommand(BYTE byCommand)
{
  BYTE  arbyCommand[3];
  int i;
  for(i=0;i<theApp.m_nChannels;i++)
  {
	   if(m_nChannel[i]==1)
	   {
	   		CString sEntry;
			sEntry.Format("Pan%02d_Address",i+1);
			arbyCommand[0]=(BYTE)0xEE;
			BYTE byAddress=(BYTE)AfxGetApp()->GetProfileInt("Info",sEntry,i);
			if(byAddress<=30)
			{
				arbyCommand[1]=byAddress;
				arbyCommand[2]=byCommand;
				WriteCommCommand(arbyCommand);
			}
	   }
  }
}
//////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////
void CGtMpegWnd::OnFreezeVideo() 
{
  
}
//////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////
void CGtMpegWnd::OnStartVideo() 
{
	SendCameraCommand(0);
}
/////////////////////////////////////////////////////////////////////////////
//
/////////////////////////////////////////////////////////////////////////////
HBRUSH CGtMpegWnd::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
	switch(nCtlColor)
	{
	   case CTLCOLOR_STATIC:
       case CTLCOLOR_BTN:
	          pDC->SetBkMode(TRANSPARENT);
	          return HBRUSH(m_BackgndBrush);
       default:
		   break;
	}
	HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
	return hbr;
}
/////////////////////////////////////////////////////////////////////////
//
/////////////////////////////////////////////////////////////////////////
BOOL CGtMpegWnd::OnEraseBkgnd(CDC* pDC) 
{
	if(m_pVideoBK != NULL)
	{
	   	CRect rect;
		GetClientRect(rect);
		int nx=0,ny=0;
		while(1)
		{
		  m_pVideoBK->Draw(pDC,nx,ny);
		  if(ny<rect.bottom)
		  {
		     if(nx<rect.right)
				 nx+=m_pVideoBK->GetWidth();
			 else
			 {
				 nx=0;
				 ny+=m_pVideoBK->GetHeight();
			 }
		  }
		  else
			  break;
		}
	}
	else
	   return CDialog::OnEraseBkgnd(pDC);
	return TRUE;
}
/////////////////////////////////////////////////////////////////////////
//
/////////////////////////////////////////////////////////////////////////
BOOL CGtMpegWnd::OnQueryNewPalette() 
{
	CPalette * pPal = m_pVideoBK->GetPalette();
	if( pPal != 0 && GetSafeHwnd() != 0 ) 
	{
		CClientDC dc(this);
		CPalette * pOldPalette = dc.SelectPalette(pPal, FALSE);
		UINT nChanged = dc.RealizePalette();
		dc.SelectPalette(pOldPalette, TRUE);
		if (nChanged == 0)
			return FALSE;
		Invalidate();
		return TRUE;
	}
	return CDialog::OnQueryNewPalette();
}
/////////////////////////////////////////////////////////////////////////
//
/////////////////////////////////////////////////////////////////////////
void CGtMpegWnd::OnPaletteChanged(CWnd* pFocusWnd) 
{
	CPalette * pPal = m_pVideoBK->GetPalette();
	if( pPal != 0 && GetSafeHwnd() != 0 && pFocusWnd != this && ! IsChild(pFocusWnd) ) 
	{
		CClientDC dc(this);
		CPalette * pOldPalette = dc.SelectPalette(pPal, TRUE);
		UINT nChanged = dc.RealizePalette();
		dc.SelectPalette(pOldPalette, TRUE);
		if( nChanged )
			Invalidate();
	} 
	else
	   CWnd::OnPaletteChanged(pFocusWnd);
}
///////////////////////////////////////////
//
////////////////////////////////////////////
void CGtMpegWnd::OnSystemSet() 
{
    if(theApp.m_bAlarm)
	{
#ifndef _DEBUG	   
	   CPassWordDlg dlg;
	   if(dlg.DoModal()!=IDOK)
		  return;
#endif
	}
	PauseDisplay();
	CMpegSheet Sheet("系统参数设置");
	CAddressPage     AddressPage;
	CSystemPage      SysPage;
	CFacePage        FacePage;
	CLinkageAlarmSet LinkageAlarmSetPage;
	CZoneOperator    ZoneOperatorPage;
	CAlarmInfo       AlarmInfoPage;
    CTimerRec        TimerRecPage; 

	Sheet.AddPage(&SysPage);
	Sheet.AddPage(&AddressPage);
	Sheet.AddPage(&FacePage);
	if(theApp.m_bAlarm)
	{
	  Sheet.AddPage(&LinkageAlarmSetPage);
	  Sheet.AddPage(&ZoneOperatorPage);
	  Sheet.AddPage(&AlarmInfoPage);
	}
#ifdef _DEBUG
	Sheet.AddPage(&TimerRecPage);
#endif
	if(Sheet.DoModal()==IDOK)
	{
	   ChangShowText();
	   if(m_pVideoBK!=NULL)
	   {
	      delete m_pVideoBK;
		  m_pVideoBK=NULL;
	   }
	   CString sPath;
	   sPath=AfxGetApp()->GetProfileString("Face","VideoFrameBK",GetAppPath()+"FacePlug\\视频边框.jpg");
	   m_cMpegPos.SetObject(sPath,"");
	   sPath=AfxGetApp()->GetProfileString("Face","MenuFrameBK",GetAppPath()+"FacePlug\\视频边框.jpg");
	   m_cSetingPos.SetObject(sPath,"");
	   sPath=AfxGetApp()->GetProfileString("Face","ScreenBK",GetAppPath()+"FacePlug\\屏幕背景.jpg");
	   m_pVideoBK=new CImageObject(sPath);
	   Invalidate();
	}
}
//////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////
void CGtMpegWnd::OnChoiceChannel(UINT id)
{
    int nSort=id-IDC_CHANNEL0;
	if(nSort>=0)
	{
	   m_nChannel[nSort]=!m_nChannel[nSort];
       ((CButton *)GetDlgItem(id))->SetCheck(m_nChannel[nSort]);
	}
}
////////////////////////////////////////////////////////////////////////
//
////////////////////////////////////////////////////////////////////////
void CGtMpegWnd::OnPlay() 
{
	int	nPlaybackWay=AfxGetApp()->GetProfileInt("系统参数","回放方式",1);
	switch(nPlaybackWay)
	{
	   case 0:
		   {  
		      CPlaybackListDlg dlg(this);
		      if(dlg.DoModal()==IDOK)
			  {
			     for(int i=0;i<theApp.m_nChannels;i++)
				 {
	                if(m_nChoiceChannel[i]==1)
					{
	                   CVideoPos* pWnd=(CVideoPos*)GetDlgItem(IDC_VIDEO_POS+i);
	                   g_pDevice[i]->StopDisplay();
	                   if(!g_pDevice[i]->StartPlayback())
					   {
		                  g_pDevice[i]->StartDisplay();
					   }
					   else
					   {
					     if(m_nPlays<=0)
						 {
						    m_nPlays=1;
				            //AfxBeginThread((AFX_THREADPROC) CheckPlay,this);
						 }
						 else
						    m_nPlays++;
					   }
					}
				 }
			  }
		   }
		      break;
	   case 1:
		   {
		      CTimeSearchDlg dlg(this);
			  if(dlg.DoModal()==IDOK)
			  {
	            CVideoPos* pWnd=(CVideoPos*)GetDlgItem(IDC_VIDEO_POS+dlg.m_nChannel);
	            g_pDevice[dlg.m_nChannel]->StopDisplay();
			    if(!g_pDevice[dlg.m_nChannel]->StartPlayback())
		            g_pDevice[dlg.m_nChannel]->StartDisplay();
				else
				{
					  if(m_nPlays<=0)
					  {
					    m_nPlays=1;
				        //AfxBeginThread((AFX_THREADPROC) CheckPlay,this);

⌨️ 快捷键说明

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