📄 gtmpegwnd.cpp
字号:
}
}
/////////////////////////////
//
/////////////////////////////
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 + -