📄 gtmpegwnd.cpp
字号:
else
{
CFile AlarmFile;
if(AlarmFile.Open(sAlarmFile,CFile::modeRead))
{
CArchive ar(&AlarmFile,CArchive::load);
m_lstAlarmChunnel.Serialize(ar);
ar.Close();
AlarmFile.Close();
}
}
for(int i=0;i<8;i++)
m_nAlarmOffLine[i]=0;
}
//////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////
void CGtMpegWnd::AdjustMpegWindow(int nChannel)
{
m_DisplaySize.cx=(m_rMpegRect.Width()-2*20-(m_nPicNumX-1)*3)/m_nPicNumX;
m_DisplaySize.cy=(m_rMpegRect.Height()-2*20-m_nPicNumY*_SHOW_WIDTH)/m_nPicNumY;
if(m_DisplaySize.cx>768)
m_DisplaySize.cx=760;
if(m_DisplaySize.cy>576)
m_DisplaySize.cy=576;
if(AfxGetApp()->GetProfileInt("系统参数","采集方式",0)==1)
{
if(m_nPicNumX==1&&m_nPicNumY==1)
{
m_DisplaySize.cy=576/2;
m_DisplaySize.cx=m_DisplaySize.cx/2;
}
}
//
CRect rPicRect,rTempRect;
int nStartX=m_rMpegRect.left+20,nStartY=m_rMpegRect.top+20;
int nSort=0;
for(int k=0;k<9;k++)
{
GetDlgItem(IDC_VIDEO_POS+k)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_CHANNEL_SHOW0+k)->ShowWindow(SW_HIDE);
}
if(nChannel==-1)
{
for(int i=0;i<m_nPicNumX;i++)
{
for(int j=0;j<m_nPicNumY;j++)
{
GetDlgItem(IDC_VIDEO_POS+nSort)->GetWindowRect(rPicRect);
ScreenToClient(rPicRect);
rPicRect.left=nStartX;
rPicRect.top=nStartY;
rPicRect.right=rPicRect.left+m_DisplaySize.cx;
rPicRect.bottom=rPicRect.top+m_DisplaySize.cy;
ClientToScreen(rPicRect);
GetDlgItem(IDC_VIDEO_POS+nSort)->MoveWindow(rPicRect);
GetDlgItem(IDC_VIDEO_POS+nSort)->Invalidate();
int nPosX=rPicRect.left;
int nPosY=rPicRect.bottom;
int nWidth=rPicRect.Width();
GetDlgItem(IDC_CHANNEL_SHOW0+nSort)->GetWindowRect(rTempRect);
ScreenToClient(rTempRect);
rTempRect.left=nPosX;
rTempRect.top=nPosY;
rTempRect.right=rTempRect.left+nWidth;
rTempRect.bottom=rTempRect.top+_SHOW_WIDTH;
GetDlgItem(IDC_CHANNEL_SHOW0+nSort)->MoveWindow(rTempRect);
GetDlgItem(IDC_VIDEO_POS+nSort)->ShowWindow(SW_SHOW);
if(nSort>=theApp.m_nChannels)
GetDlgItem(IDC_CHANNEL_SHOW0+nSort)->ShowWindow(SW_HIDE);
else
GetDlgItem(IDC_CHANNEL_SHOW0+nSort)->ShowWindow(SW_SHOW);
nStartX+=m_DisplaySize.cx+3;
nSort++;
}
nStartX=m_rMpegRect.left+20;
nStartY+=m_DisplaySize.cy+_SHOW_WIDTH;
}
}
else
{
GetDlgItem(IDC_VIDEO_POS+nChannel)->GetWindowRect(rPicRect);
ScreenToClient(rPicRect);
rPicRect.left=nStartX;
rPicRect.top=nStartY;
rPicRect.right=rPicRect.left+m_DisplaySize.cx;
rPicRect.bottom=rPicRect.top+m_DisplaySize.cy;
ClientToScreen(rPicRect);
GetDlgItem(IDC_VIDEO_POS+nChannel)->MoveWindow(rPicRect);
int nPosX=rPicRect.left;
int nPosY=rPicRect.bottom;
int nWidth=rPicRect.Width();
GetDlgItem(IDC_CHANNEL_SHOW0+nChannel)->GetWindowRect(rTempRect);
ScreenToClient(rTempRect);
rTempRect.left=nPosX;
rTempRect.top=nPosY;
rTempRect.right=rTempRect.left+nWidth;
rTempRect.bottom=rTempRect.top+_SHOW_WIDTH;
GetDlgItem(IDC_CHANNEL_SHOW0+nChannel)->MoveWindow(rTempRect);
GetDlgItem(IDC_VIDEO_POS+nChannel)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_VIDEO_POS+nChannel)->Invalidate();
GetDlgItem(IDC_CHANNEL_SHOW0+nChannel)->ShowWindow(SW_SHOW);
}
}
//////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////
void CGtMpegWnd::ChangShowText()
{
for(int i=0;i<theApp.m_nChannels;i++)
{
CString sCaption;
sCaption.Format("频道%02d:",i+1);
CString sEntry;
sEntry.Format("Channel%02d_Txt",i+1);
sCaption+=AfxGetApp()->GetProfileString("Info",sEntry);
((CCaption* )GetDlgItem(IDC_CHANNEL_SHOW0+i))->SetCaptionText(sCaption);
}
}
//////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////
void CGtMpegWnd::MoveMenu()
{
CRect rScrRect;
GetWindowRect(rScrRect);
ScreenToClient(rScrRect);
rScrRect.bottom=m_MaxVertSize;
rScrRect.right=m_MaxHorzSize;
rScrRect.left=0;
rScrRect.top=0;
MoveWindow(rScrRect);
ClientToScreen(rScrRect);
//菜单部分
CRect rSetingRect,rOldSetingRect,rTempRect;
int nSpace;
GetDlgItem(IDC_SETING_POS)->GetWindowRect(rSetingRect);
ScreenToClient(rSetingRect);
rOldSetingRect=rSetingRect;
rSetingRect.right=m_MaxHorzSize;
rSetingRect.left=rScrRect.right-rOldSetingRect.Width();
rSetingRect.bottom=rScrRect.bottom;
nSpace=rSetingRect.left-rOldSetingRect.left;
GetDlgItem(IDC_SETING_POS)->MoveWindow(rSetingRect);
ScreenToClient(rSetingRect);
//IDC_VIDEO_SETTING
CRect rVideoSeting;
GetDlgItem(IDC_VIDEO_SETTING)->GetWindowRect(rVideoSeting);
ScreenToClient(rVideoSeting);
rVideoSeting.OffsetRect(nSpace,0);
GetDlgItem(IDC_VIDEO_SETTING)->MoveWindow(rVideoSeting);
//
for(int j=0;j<theApp.m_nMaxChannels;j++)
{
GetDlgItem(IDC_CHANNEL0+j)->GetWindowRect(rTempRect);
ScreenToClient(rTempRect);
rTempRect.OffsetRect(nSpace,0);
GetDlgItem(IDC_CHANNEL0+j)->MoveWindow(rTempRect);
GetDlgItem(IDC_CHANNEL_STATES0+j)->GetWindowRect(rTempRect);
ScreenToClient(rTempRect);
rTempRect.OffsetRect(nSpace,0);
GetDlgItem(IDC_CHANNEL_STATES0+j)->MoveWindow(rTempRect);
if(j>=theApp.m_nChannels)
{
GetDlgItem(IDC_CHANNEL0+j)->EnableWindow(FALSE);
GetDlgItem(IDC_CHANNEL_STATES0+j)->EnableWindow(FALSE);
}
if(theApp.m_bAlarm)
{
GetDlgItem(IDC_LAMP_1+j)->GetWindowRect(rTempRect);
ScreenToClient(rTempRect);
rTempRect.OffsetRect(nSpace,0);
rTempRect.right=rTempRect.left+16;
rTempRect.bottom=rTempRect.top+16;
GetDlgItem(IDC_LAMP_1+j)->MoveWindow(rTempRect);
CString sCaption="";
sCaption.Format("%02d频道报警指示灯",j+1);
m_wndAlarm[j].Create(sCaption,rTempRect,this,IDC_LAMP_1+j);
}
}
m_cStop.GetWindowRect(rTempRect);
ScreenToClient(rTempRect);
rTempRect.OffsetRect(nSpace,0);
m_cStop.MoveWindow(rTempRect);
m_cStop.EnableWindow(theApp.m_bRecord);
//
m_cRecord.GetWindowRect(rTempRect);
ScreenToClient(rTempRect);
rTempRect.OffsetRect(nSpace,0);
m_cRecord.MoveWindow(rTempRect);
m_cRecord.EnableWindow(theApp.m_bRecord);
//
m_cPlay.GetWindowRect(rTempRect);
ScreenToClient(rTempRect);
rTempRect.OffsetRect(nSpace,0);
m_cPlay.MoveWindow(rTempRect);
m_cPlay.EnableWindow(theApp.m_bRecord);
//
m_cDiskSpace.GetWindowRect(rTempRect);
ScreenToClient(rTempRect);
rTempRect.OffsetRect(nSpace,0);
m_cDiskSpace.MoveWindow(rTempRect);
//
m_cDiskSpaceTxt.GetWindowRect(rTempRect);
ScreenToClient(rTempRect);
rTempRect.OffsetRect(nSpace,0);
m_cDiskSpaceTxt.MoveWindow(rTempRect);
//IDOK
m_cOK.GetWindowRect(rTempRect);
ScreenToClient(rTempRect);
rTempRect.OffsetRect(nSpace,0);
m_cOK.MoveWindow(rTempRect);
//IDC_START_VIDEO
m_cStartVideo.GetWindowRect(rTempRect);
ScreenToClient(rTempRect);
rTempRect.OffsetRect(nSpace,0);
m_cStartVideo.MoveWindow(rTempRect);
//
m_cPicPlane9.GetWindowRect(rTempRect);
ScreenToClient(rTempRect);
rTempRect.OffsetRect(nSpace,0);
m_cPicPlane9.MoveWindow(rTempRect);
//
m_cPicPlane4.GetWindowRect(rTempRect);
ScreenToClient(rTempRect);
rTempRect.OffsetRect(nSpace,0);
m_cPicPlane4.MoveWindow(rTempRect);
//
m_cPicPlane1.GetWindowRect(rTempRect);
ScreenToClient(rTempRect);
rTempRect.OffsetRect(nSpace,0);
m_cPicPlane1.MoveWindow(rTempRect);
//
m_cSnap.GetWindowRect(rTempRect);
ScreenToClient(rTempRect);
rTempRect.OffsetRect(nSpace,0);
m_cSnap.MoveWindow(rTempRect);
//
m_cBackup.GetWindowRect(rTempRect);
ScreenToClient(rTempRect);
rTempRect.OffsetRect(nSpace,0);
m_cBackup.MoveWindow(rTempRect);
m_cBackup.EnableWindow(theApp.m_bRecord);
//
m_cSystemSet.GetWindowRect(rTempRect);
ScreenToClient(rTempRect);
rTempRect.OffsetRect(nSpace,0);
m_cSystemSet.MoveWindow(rTempRect);
//
m_cOpenMap.GetWindowRect(rTempRect);
ScreenToClient(rTempRect);
rTempRect.OffsetRect(nSpace,0);
m_cOpenMap.MoveWindow(rTempRect);
//IDC_MSGWND
GetDlgItem(IDC_MSGWND)->GetWindowRect(rTempRect);
ScreenToClient(rTempRect);
rTempRect.OffsetRect(nSpace,0);
GetDlgItem(IDC_MSGWND)->MoveWindow(rTempRect);
//IDC_MENUWND
GetDlgItem(IDC_MENUWND)->GetWindowRect(rTempRect);
ScreenToClient(rTempRect);
rTempRect.OffsetRect(nSpace,0);
GetDlgItem(IDC_MENUWND)->MoveWindow(rTempRect);
//IDC_MSG_LIST
GetDlgItem(IDC_MSG_LIST)->GetWindowRect(rTempRect);
ScreenToClient(rTempRect);
rTempRect.OffsetRect(nSpace,0);
GetDlgItem(IDC_MSG_LIST)->MoveWindow(rTempRect);
//
GetWindowRect(rScrRect);
ScreenToClient(rScrRect);
//
m_cLogo.GetWindowRect(rTempRect);
rTempRect.bottom=rScrRect.bottom-22;
rTempRect.top=rTempRect.bottom-m_pLogoObject->GetHeight();
rTempRect.right=rTempRect.left+m_pLogoObject->GetWidth();
ScreenToClient(rTempRect);
rTempRect.OffsetRect(nSpace,0);
m_cLogo.MoveWindow(rTempRect);
// IDC_BUILD_UNIT
m_wndBuildLogo.GetWindowRect(rTempRect);
CRect rTopRect,rBottomRect;
m_cClock.GetWindowRect(rTopRect);
rTempRect.right=rTopRect.right;
GetDlgItem(IDC_MENUWND)->GetWindowRect(rBottomRect);
rTempRect.bottom=rBottomRect.top-3;
ScreenToClient(rTempRect);
rTempRect.OffsetRect(nSpace,0);
m_wndBuildLogo.MoveWindow(rTempRect);
//m_cAbout
m_cAbout.GetWindowRect(rTempRect);
ScreenToClient(rTempRect);
rTempRect.OffsetRect(nSpace,0);
m_cAbout.MoveWindow(rTempRect);
//
CRect rClockRect;
m_cClock.GetWindowRect(rClockRect);
ScreenToClient(rClockRect);
rClockRect.OffsetRect(nSpace,0);
m_cClock.MoveWindow(rClockRect);
m_cClock.SetStyle(CDigitClock::XDC_SECOND);
////////////////////////////////
GetDlgItem(IDC_RUDDER_POS)->GetWindowRect(rTempRect);
rTempRect.right=rTempRect.left+90;
rTempRect.bottom=rTempRect.top+90;
ScreenToClient(rTempRect);
rTempRect.OffsetRect(nSpace,0);
GetDlgItem(IDC_RUDDER_POS)->MoveWindow(rTempRect);
CStringArray asCaption;
asCaption.SetSize(0);
asCaption.Add("云台控制");
asCaption.Add(AfxGetApp()->GetProfileString("控制名称","自动","自动/停止"));
asCaption.Add(AfxGetApp()->GetProfileString("控制名称","抬头","向上"));
asCaption.Add(AfxGetApp()->GetProfileString("控制名称","低头","向下"));
asCaption.Add(AfxGetApp()->GetProfileString("控制名称","左转","向左"));
asCaption.Add(AfxGetApp()->GetProfileString("控制名称","停止","向右"));
m_wndRudderButton.Create(asCaption,rTempRect,this,IDC_RUDDER_POS);
asCaption.SetSize(0);
asCaption.Add("镜头控制");
asCaption.Add(AfxGetApp()->GetProfileString("控制名称","光圈增大","光圈增大"));
asCaption.Add(AfxGetApp()->GetProfileString("控制名称","光圈减少","光圈减少"));
asCaption.Add(AfxGetApp()->GetProfileString("控制名称","短焦变倍","镜头拉近"));
asCaption.Add(AfxGetApp()->GetProfileString("控制名称","长焦变倍","镜头拉远"));
asCaption.Add(AfxGetApp()->GetProfileString("控制名称","聚焦前移","聚焦前移"));
asCaption.Add(AfxGetApp()->GetProfileString("控制名称","聚焦后移","聚焦后移"));
asCaption.Add(AfxGetApp()->GetProfileString("控制名称","K1接通","雨刷工作"));
GetDlgItem(IDC_PLATE_POS)->GetWindowRect(rTempRect);
rTempRect.right=rTempRect.left+100;
rTempRect.bottom=rTempRect.top+100;
ScreenToClient(rTempRect);
rTempRect.OffsetRect(nSpace,0);
GetDlgItem(IDC_PLATE_POS)->MoveWindow(rTempRect);
m_wndPlate.Create(asCaption,rTempRect,this,IDC_PLATE_POS);
}
//////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////
void CGtMpegWnd::SetMenuIcon()
{
CString sPath=AfxGetApp()->GetProfileString("Face","ButtonBK",GetAppPath()+"FacePlug\\按钮背景.JPG");
m_cStop.SetIcon("停止监控/录像/回放",sPath,IDI_STOP);
m_cRecord.SetIcon("开始录像",sPath,IDI_RECORD);
m_cPlay.SetIcon("回放",sPath,IDI_PLAY);
m_cOK.SetIcon("退出",sPath,IDI_EXIT);
m_cOpenMap.SetIcon("电子地图",sPath,IDI_MAP);
m_cVideoSeting.SetIcon("视频参数设置",sPath,IDI_VIDEO_SETING);
m_cStartVideo.SetIcon("实时监控",sPath,IDI_START_VIDEO);
m_cPicPlane9.SetIcon("9画面分割",sPath,IDI_PIC_PLANE_9);
m_cPicPlane4.SetIcon("4画面分割",sPath,IDI_PIC_PLANE_4);
m_cPicPlane1.SetIcon("单画面",sPath,IDI_PIC_PLANE_1);
m_cSystemSet.SetIcon("系统参数设置",sPath,IDI_SYS_SET);
m_cSnap.SetIcon("单帧捕捉",sPath,IDI_SNAP);
m_cBackup.SetIcon("视频备份",sPath,IDI_BACKUP);
m_cAbout.SetIcon("关于...",sPath,IDI_ABOUT);
//
}
//////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////
void CGtMpegWnd::StartMpeg()
{
for(DWORD k=0;k<g_dwNumberOfSlots;k++)
{
if((int)k<m_nPicNumX*m_nPicNumY)
{
OpenSlot(k);
}
}
SendMessage(WM_LBUTTONDOWN,0,0);
m_bStart=TRUE;
if(!OpenComm())
{
m_cMsgListBox.AddString("串口通讯失败!");
}
if(theApp.m_bAlarm)
{
InitAlarmChunnel();
m_bComWorking=TRUE;
if(AfxBeginThread((AFX_THREADPROC) ReadCom,(LPVOID)this)==NULL)
{
m_cMsgListBox.AddString("创建串口线程失败!");
}
EscapeCommFunction(m_hCom,SETDTR) ;
if(!m_AlarmSound.InitAudio(GetAppPath()+"Sound\\ALARM.WAV"))
{
m_cMsgListBox.AddString("声音初始失败!");
}
InitZoneSet();
}
EndWaitCursor();
}
//////////////////////////
//
//////////////////////////
void CGtMpegWnd::OnPaint()
{
CPaintDC dc(this); // device context for painting
CRect rTempRect;
m_cLogo.GetWindowRect(rTempRect);
if(m_pLogoObject!=NULL)
m_pLogoObject->DrawInRect(&dc,rTempRect);
if (IsIconic())
{
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
//////////////////////////////////////
//
//
/////////////////////////////////////
HCURSOR CGtMpegWnd::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
/////////////////////////////////////////
//
//////////////////////////////////////////
void CGtMpegWnd::CloseSlot(DWORD dwSlotNumber)
{
if(dwSlotNumber!=-1)
{
if (g_pDevice[dwSlotNumber] == NULL)
return;
g_pDevice[dwSlotNumber]->StopCheck();
if(g_pDevice[dwSlotNumber]->m_bRePlay)
{
g_pDevice[dwSlotNumber]->StopPlayback();
m_nPlays--;
}
if(g_pDevice[dwSlotNumber]->m_bRecord)
{
g_pDevice[dwSlotNumber]->StopRecord();
m_nRecords--;
}
g_pDevice[dwSlotNumber]->Close();
delete g_pDevice[dwSlotNumber];
g_pDevice[dwSlotNumber] = NULL;
GetDlgItem(IDC_VIDEO_POS+dwSlotNumber)->Invalidate();
g_bSlotOpened[dwSlotNumber]= FALSE;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -