📄 remotetimeplay.cpp
字号:
BOOL CRemoteTimePlay::IsInWnd(CPoint point)
{
CRect rc;
GetDlgItem(IDC_WND)->GetWindowRect(&rc);
ScreenToClient(&rc);
if(PtInRect(&rc,point))
return TRUE;
else
return FALSE;
}
void CRemoteTimePlay::F_ShowFullScreen()
{
F_EnableFlashWnd(FALSE);
CRect rc,rcClient;
::GetWindowRect(m_hPareDlgWnd,m_rcPareDlg);
::GetWindowRect(m_hPareTabWnd,m_rcPareTab);
::ScreenToClient(m_hPareDlgWnd,(POINT*)(&m_rcPareTab));
::ScreenToClient(m_hPareDlgWnd,(POINT*)(&m_rcPareTab)+1);
::GetWindowRect(m_hWnd,m_rcParent);
::ScreenToClient(m_hPareTabWnd,(POINT*)(&m_rcParent));
::ScreenToClient(m_hPareTabWnd,(POINT*)(&m_rcParent)+1);
::SetWindowPos(m_hPareDlgWnd,NULL,m_rcScreen.left-SCREEN_EDGE,m_rcScreen.top-SCREEN_EDGE,m_rcScreen.Width()+2*SCREEN_EDGE,m_rcScreen.Height()+2*SCREEN_EDGE,SWP_SHOWWINDOW);
::GetClientRect(m_hPareDlgWnd,rc);
::SetWindowPos(m_hPareTabWnd,NULL,rc.left,rc.top,rc.Width(),rc.Height(),SWP_SHOWWINDOW);
::GetClientRect(m_hPareTabWnd,rc);
::SetWindowPos(m_hWnd,NULL,rc.left,rc.top,rc.Width(),rc.Height(),SWP_SHOWWINDOW);
GetDlgItem(IDC_WND)->GetClientRect(rcClient);
GetDlgItem(IDC_WND)->GetWindowRect(rc);
int iEdge=(rc.Width()-rcClient.Width())/2;
rc=m_rcScreen;
rc.left-=iEdge;
rc.right+=iEdge;
rc.top-=iEdge;
rc.bottom+=iEdge;
this->ScreenToClient(rc);
::SetWindowPos(GetDlgItem(IDC_WND)->m_hWnd,NULL,rc.left,rc.top,rc.Width(),rc.Height(),SWP_SHOWWINDOW);
Invalidate(FALSE);
UpdateWindow();
}
void CRemoteTimePlay::F_EnableFlashWnd(BOOL bEnable)
{
if(bEnable)
{
//THE same to multiplay
GetDlgItem(IDC_COMBOSERVER)->ModifyStyle(0,WS_VISIBLE,0);
GetDlgItem(IDC_COMBOPORT)->ModifyStyle(0,WS_VISIBLE,0);
GetDlgItem(IDC_DATESTART)->ModifyStyle(0,WS_VISIBLE,0);
GetDlgItem(IDC_DATESTOP)->ModifyStyle(0,WS_VISIBLE,0);
GetDlgItem(IDC_TIMESTOP)->ModifyStyle(0,WS_VISIBLE,0);
GetDlgItem(IDC_TIMESTART)->ModifyStyle(0,WS_VISIBLE,0);
GetDlgItem(IDC_PLAY_TIME)->ModifyStyle(0,WS_VISIBLE,0);
GetDlgItem(IDC_STOP)->ModifyStyle(0,WS_VISIBLE,0);
GetDlgItem(IDC_SLOW)->ModifyStyle(0,WS_VISIBLE,0);
GetDlgItem(IDC_FAST)->ModifyStyle(0,WS_VISIBLE,0);
GetDlgItem(IDC_CAPPIC)->ModifyStyle(0,WS_VISIBLE,0);
GetDlgItem(IDC_SOUND)->ModifyStyle(0,WS_VISIBLE,0);
GetDlgItem(IDC_VOLUME_SLIDER)->ModifyStyle(0,WS_VISIBLE,0);
}
else
{
//THE same to multiplay
GetDlgItem(IDC_COMBOSERVER)->ModifyStyle(WS_VISIBLE,0,0);
GetDlgItem(IDC_COMBOPORT)->ModifyStyle(WS_VISIBLE,0,0);
GetDlgItem(IDC_DATESTART)->ModifyStyle(WS_VISIBLE,0,0);
GetDlgItem(IDC_DATESTOP)->ModifyStyle(WS_VISIBLE,0,0);
GetDlgItem(IDC_TIMESTOP)->ModifyStyle(WS_VISIBLE,0,0);
GetDlgItem(IDC_TIMESTART)->ModifyStyle(WS_VISIBLE,0,0);
GetDlgItem(IDC_PLAY_TIME)->ModifyStyle(WS_VISIBLE,0,0);
GetDlgItem(IDC_STOP)->ModifyStyle(WS_VISIBLE,0,0);
GetDlgItem(IDC_SLOW)->ModifyStyle(WS_VISIBLE,0,0);
GetDlgItem(IDC_FAST)->ModifyStyle(WS_VISIBLE,0,0);
GetDlgItem(IDC_CAPPIC)->ModifyStyle(WS_VISIBLE,0,0);
GetDlgItem(IDC_SOUND)->ModifyStyle(WS_VISIBLE,0,0);
GetDlgItem(IDC_VOLUME_SLIDER)->ModifyStyle(WS_VISIBLE,0,0);
}
}
void CRemoteTimePlay::F_InitUI()
{
CButton *pButton;
pButton = (CButton *)GetDlgItem(IDC_PLAY_TIME);
pButton->SetIcon(m_hPlayEnableIcon);
pButton->EnableWindow(TRUE);
pButton = (CButton *)GetDlgItem(IDC_STOP);
pButton->SetIcon(m_hStopDisableIcon);
pButton->EnableWindow(FALSE);
pButton = (CButton *)GetDlgItem(IDC_FAST);
pButton->SetIcon(m_hFastDisableIcon);
pButton->EnableWindow(FALSE);
pButton = (CButton *)GetDlgItem(IDC_SLOW);
pButton->SetIcon(m_hSlowDisableIcon);
pButton->EnableWindow(FALSE);
pButton = (CButton *)GetDlgItem(IDC_CAPPIC);
pButton->SetIcon(m_hCaptureIcon);
pButton->EnableWindow(FALSE);
pButton = (CButton *)GetDlgItem(IDC_SOUND);
pButton->SetIcon(m_hSoundStopIcon);
pButton->EnableWindow(FALSE);
}
void CRemoteTimePlay::F_SetPlayState()
{
m_ctlVolume.EnableWindow(TRUE);
CButton *pButton;
pButton = (CButton *)GetDlgItem(IDC_PLAY_TIME);
pButton->SetIcon(m_hPauseEnableIcon);
pButton->EnableWindow(TRUE);
pButton = (CButton *)GetDlgItem(IDC_STOP);
pButton->SetIcon(m_hStopEnableIcon);
pButton->EnableWindow(TRUE);
pButton = (CButton *)GetDlgItem(IDC_FAST);
pButton->SetIcon(m_hFastEnableIcon);
pButton->EnableWindow(TRUE);
pButton = (CButton *)GetDlgItem(IDC_SLOW);
pButton->SetIcon(m_hSlowEnableIcon);
pButton->EnableWindow(TRUE);
pButton = (CButton *)GetDlgItem(IDC_CAPPIC);
pButton->SetIcon(m_hCaptureIcon);
pButton->EnableWindow(TRUE);
pButton = (CButton *)GetDlgItem(IDC_SOUND);
if(m_bSound)
pButton->SetIcon(m_hSoundStartIcon);
else
pButton->SetIcon(m_hSoundStopIcon);
pButton->EnableWindow(TRUE);
}
void CRemoteTimePlay::OnCancel()
{
// TODO: Add extra cleanup here
// CDialog::OnCancel();
}
void CRemoteTimePlay::OnSelchangeComboserver()
{
// TODO: Add your control notification handler code here
int iSelServer = m_ServerName.GetCurSel() - 1;
if(iSelServer < 0)
return;
ServerID = serverinfo[iSelServer].m_lServerID;
m_lStartChan = serverinfo[iSelServer].m_lStartChannel;
int m_iChanNum = serverinfo[iSelServer].m_iServerChannelNumber;
m_ChannelName.ResetContent();
CString sTemp;
for(int i=0; i<m_iChanNum; i++)
{
sTemp.Format("%d", i+m_lStartChan);
m_ChannelName.AddString(sTemp);
}
iChannel = 0;
m_ChannelName.SetCurSel(iChannel);
}
void CRemoteTimePlay::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
DWORD nPos;
if(nIDEvent == PLAYBYTIME_TIMER)
{
if(lHandle >= 0)
{
NET_DVR_PlayBackControl(lHandle, NET_DVR_PLAYGETPOS, 0, &nPos);
if(nPos > 100) //Playback or download exception
{
F_StopPlay();
AfxMessageBox("Playback exception!");
}
if(nPos == 100)
{
F_StopPlay();
AfxMessageBox("Playback completed!");
}
}
}
else if(nIDEvent == DOWNBYTIME_TIMER)
{
if(m_bDown)
{
NET_DVR_PlayBackControl(m_lLoadHandle, NET_DVR_PLAYGETPOS, 0, &nPos);
if(nPos > 100)
{
m_bDown=FALSE;
NET_DVR_StopGetFile(m_lLoadHandle);
GetDlgItem(IDC_BUTTONDOWNLOAD)->SetWindowText("Download");
AfxMessageBox("Download exception!");
}
if(nPos == 100)
{
m_bDown=FALSE;
NET_DVR_StopGetFile(m_lLoadHandle);
GetDlgItem(IDC_BUTTONDOWNLOAD)->SetWindowText("Download");
AfxMessageBox("Download completed!");
}
}
}
CDialog::OnTimer(nIDEvent);
}
void CRemoteTimePlay::OnButtondownload()
{
// TODO: Add your control notification handler code here
CString csFileName;
CString csStartTime, csStopTime;
CString csTemp,csDir;
char nFileName[256];
UpdateData(TRUE);
if(!m_bDown)
{
if(m_ServerName.GetCurSel() == 0)
{
AfxMessageBox("Please select DVR!");
return;
}
int iSelServer = m_ServerName.GetCurSel() - 1;
iChannel = m_ChannelName.GetCurSel()+m_lStartChan;
csStartTime.Format("%04d%02d%02d%02d%02d%02d",m_ctDateStart.GetYear(),m_ctDateStart.GetMonth(), m_ctDateStart.GetDay(), m_ctTimeStart.GetHour(), m_ctTimeStart.GetMinute(), m_ctTimeStart.GetSecond());
csStopTime.Format("%04d%02d%02d%02d%02d%02d",m_ctDateStop.GetYear(),m_ctDateStop.GetMonth(), m_ctDateStop.GetDay(), m_ctTimeStop.GetHour(), m_ctTimeStop.GetMinute(), m_ctTimeStop.GetSecond());
csDir.Format("%s\\",ClientParam.m_csDownLoadPath);
sprintf(nFileName,"%s%s_%02d_D%s_%sTime.mp4",csDir,serverinfo[iSelServer].m_csServerIP, iChannel,csStartTime,csStopTime);
TRACE("Download file name: %s \n", nFileName);
NET_DVR_TIME StartTime,StopTime;
UpdateData(TRUE);
StartTime.dwYear = m_ctDateStart.GetYear();
StartTime.dwMonth = m_ctDateStart.GetMonth();
StartTime.dwDay = m_ctDateStart.GetDay();
StartTime.dwHour = m_ctTimeStart.GetHour();
StartTime.dwMinute = m_ctTimeStart.GetMinute();
StartTime.dwSecond = m_ctTimeStart.GetSecond();
StopTime.dwYear = m_ctDateStop.GetYear();
StopTime.dwMonth = m_ctDateStop.GetMonth();
StopTime.dwDay = m_ctDateStop.GetDay();
StopTime.dwHour = m_ctTimeStop.GetHour();
StopTime.dwMinute = m_ctTimeStop.GetMinute();
StopTime.dwSecond = m_ctTimeStop.GetSecond();
m_lLoadHandle = NET_DVR_GetFileByTime(ServerID,iChannel, &StartTime, &StopTime, nFileName);
if(m_lLoadHandle >= 0)
{
NET_DVR_PlayBackControl(m_lLoadHandle, NET_DVR_PLAYSTART, 0, NULL);
GetDlgItem(IDC_BUTTONDOWNLOAD)->SetWindowText("Stop Download");
m_bDown=TRUE;
SetTimer(DOWNBYTIME_TIMER,1000,NULL);
}
else
{
AfxMessageBox("Download failed!");
CString sTemp;
sTemp.Format("ERROR: NET_DVR_GetFileByTime = %d",NET_DVR_GetLastError());
TRACE(sTemp);
return;
}
}
else
{
NET_DVR_StopGetFile(m_lLoadHandle);
m_bDown=FALSE;
GetDlgItem(IDC_BUTTONDOWNLOAD)->SetWindowText("Download");
KillTimer(DOWNBYTIME_TIMER);
Invalidate(TRUE);
}
UpdateData(FALSE);
}
void CRemoteTimePlay::OnButtonloadsave()
{
// TODO: Add your control notification handler code here
// 2005-01-04
if(!m_bTimeSave)
{
static char szFilter[]="All File(*.*)|*.*||";
char m_sFile[256] = "c:\\SavefileByTime.mp4";
CString csFile;
CFileDialog dlg(FALSE,"*.mp4","SavefileByTime.mp4",OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
szFilter);
if(dlg.DoModal()==IDOK)
{
csFile = dlg.GetPathName();
UpdateData(FALSE);
sprintf(m_sFile, "%s", csFile);
if(NET_DVR_PlayBackSaveData(lHandle, m_sFile))
{
m_bTimeSave = TRUE;
GetDlgItem(IDC_BUTTONLOADSAVE)->SetWindowText("Stop Save");
}
}
}
else
{
NET_DVR_StopPlayBackSave(lHandle);
m_bTimeSave = FALSE;
GetDlgItem(IDC_BUTTONLOADSAVE)->SetWindowText("Save");
}
}
//2005-01-04
//DEL void CRemoteTimePlay::OnButplay()
//DEL {
//DEL // TODO: Add your control notification handler code here
//DEL NET_DVR_TIME StartTime,StopTime;
//DEL UpdateData(TRUE);
//DEL
//DEL if(m_ServerName.GetCurSel() == 0)
//DEL {
//DEL AfxMessageBox("Please select DVR!");
//DEL return;
//DEL }
//DEL
//DEL iChannel = m_ChannelName.GetCurSel()+m_lStartChan;
//DEL StartTime.dwYear = m_ctDateStart.GetYear();
//DEL StartTime.dwMonth = m_ctDateStart.GetMonth();
//DEL StartTime.dwDay = m_ctDateStart.GetDay();
//DEL StartTime.dwHour = m_ctTimeStart.GetHour();
//DEL StartTime.dwMinute = m_ctTimeStart.GetMinute();
//DEL StartTime.dwSecond = m_ctTimeStart.GetSecond();
//DEL StopTime.dwYear = m_ctDateStop.GetYear();
//DEL StopTime.dwMonth = m_ctDateStop.GetMonth();
//DEL StopTime.dwDay = m_ctDateStop.GetDay();
//DEL StopTime.dwHour = m_ctTimeStop.GetHour();
//DEL StopTime.dwMinute = m_ctTimeStop.GetMinute();
//DEL StopTime.dwSecond = m_ctTimeStop.GetSecond();
//DEL // if(NET_DVR_PlayBackByTimeLocDisplay(ServerID, iChannel, &StartTime, &StopTime))
//DEL {
//DEL TRACE("Remote control DVR local playback!");
//DEL }
//DEL }
//DEL void CRemoteTimePlay::OnButstop()
//DEL {
//DEL // TODO: Add your control notification handler code here
//DEL // if(NET_DVR_StopLocDisplayPlay(ServerID))
//DEL {
//DEL TRACE("Stop remote control DVR local playback!");
//DEL }
//DEL }
void CRemoteTimePlay::OnGotostart()
{
// TODO: Add your control notification handler code here
}
void CRemoteTimePlay::OnOK()
{
// TODO: Add extra cleanup here
// CDialog::OnOK();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -