📄 remotefileplay.cpp
字号:
CloseHandle(m_hFileThread);
m_hFileThread = NULL;
NET_DVR_FindClose(m_lFileHandle);
}
F_StopPlay();
Sleep(100);
}
void CRemoteFilePlay::F_Play()
{
UpdateData(TRUE);
int m_nVerifyret = -1;
CString csFileName;
int fileselpos = 0;
HWND PlayhWnd=m_PlayWnd.GetSafeHwnd();
POSITION pos = m_Filelist.GetFirstSelectedItemPosition();
if(pos == NULL)
{
AfxMessageBox("Please select file!");
return;
}
fileselpos = m_Filelist.GetNextSelectedItem(pos);
csFileName.Format("%s",m_Filelist.GetItemText(fileselpos,0));
if(csFileName.IsEmpty())
return;
TRACE("Remote playback file:%s \n", csFileName);
sprintf(filename,"%s",csFileName);
// remoteplay_info.srcfilename=filename;
if(m_nPlayHandle>=0)
{
NET_DVR_StopPlayBack(m_nPlayHandle);
m_nPlayHandle = -1;
Sleep(400);
}
m_nPlayHandle = NET_DVR_PlayBackByName(m_lServerID, filename, PlayhWnd);
if(m_nPlayHandle==-1)
{
AfxMessageBox("Playback failed!");
return;
}
NET_DVR_SetPlayDataCallBack(m_nPlayHandle, PlayDataCallBack, m_nPlayHandle);
F_SetPlayState();
NET_DVR_PlayBackControl(m_nPlayHandle, NET_DVR_PLAYSTART, 0, NULL);
if(NET_DVR_PlayBackControl(m_nPlayHandle, NET_DVR_PLAYSTARTAUDIO, 0, NULL))
{
m_bSound=TRUE;
NET_DVR_PlayBackControl(m_nPlayHandle, NET_DVR_PLAYAUDIOVOLUME, (0xffff)/2, NULL);
m_ctlVolume.SetPos(50);
((CButton *)GetDlgItem(IDC_SOUND))->SetIcon(m_hSoundStartIcon);
}
else
{
m_bSound=FALSE;
((CButton *)GetDlgItem(IDC_SOUND))->SetIcon(m_hSoundStopIcon);
}
bGetMaxTime = FALSE;
SetTimer(RPSTATE_TIMER,1000,NULL);
}
void CRemoteFilePlay::F_SetPlayState()
{
m_ctlProgress.EnableWindow(TRUE);
m_ctlVolume.EnableWindow(TRUE);
CButton *pButton;
pButton = (CButton *)GetDlgItem(IDC_PLAY_FILE);
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);
pButton = (CButton *)GetDlgItem(IDC_STEP);
pButton->SetIcon(m_hStepEnableIcon);
pButton->EnableWindow(TRUE);
pButton = (CButton *)GetDlgItem(IDC_GOTOSTART);
pButton->SetIcon(m_hGotoHeadEnableIcon);
pButton->EnableWindow(TRUE);
}
void CRemoteFilePlay::F_SetPauseState()
{
CButton *pButton;
pButton = (CButton *)GetDlgItem(IDC_PLAY_FILE);
pButton->SetIcon(m_hPlayEnableIcon);
pButton->EnableWindow(TRUE);
}
void CRemoteFilePlay::F_StopPlay()
{
if(m_bFullScreen)
{
m_bFullScreen = FALSE;
F_ShowNormal();
}
if(m_nPlayHandle >= 0)
{
if(m_bSaveFile)
{
NET_DVR_StopPlayBackSave(m_nPlayHandle);
m_bSaveFile = FALSE;
}
NET_DVR_StopPlayBack(m_nPlayHandle);
m_nPlayHandle = -1;
m_ctlProgress.SetPos(0);
CString csText;
GetDlgItem(IDC_PLAYSTATUS)->SetWindowText(csText);
KillTimer(RPSTATE_TIMER);
csText.Format("%d/%d %02d:%02d:%02d/%02d:%02d:%02d",0,0,0,0,0,0,0,0);
UpdateData(FALSE);
Invalidate(TRUE);
}
m_bPause = FALSE;
m_bSetFrame = FALSE;
F_SetStopState();
}
void CRemoteFilePlay::F_ShowNormal()
{
GetDlgItem(IDC_WND)->SetWindowPos(NULL,m_rcWnd.left,m_rcWnd.top,m_rcWnd.Width(),m_rcWnd.Height(),SWP_SHOWWINDOW);
::SetWindowPos(m_hWnd,NULL,m_rcParent.left,m_rcParent.top,m_rcParent.Width(),m_rcParent.Height(),SWP_SHOWWINDOW);
::SetWindowPos(m_hPareTabWnd,NULL,m_rcPareTab.left,m_rcPareTab.top,m_rcPareTab.Width(),m_rcPareTab.Height(),SWP_SHOWWINDOW);
::SetWindowPos(m_hPareDlgWnd,NULL,m_rcPareDlg.left,m_rcPareDlg.top,m_rcPareDlg.Width(),m_rcPareDlg.Height(),SWP_SHOWWINDOW);
F_EnableFlashWnd(TRUE);
Invalidate(FALSE);
UpdateWindow();
}
void CRemoteFilePlay::F_EnableFlashWnd(BOOL bEnable)
{
if(bEnable)
{
//THE same to multiplay
GetDlgItem(IDC_PLAYSTATUS)->ModifyStyle(0,WS_VISIBLE,0);
GetDlgItem(IDC_PLAY_FILE)->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_SOUND)->ModifyStyle(0,WS_VISIBLE,0);
GetDlgItem(IDC_VOLUME_SLIDER)->ModifyStyle(0,WS_VISIBLE,0);
GetDlgItem(IDC_PROGRESS_SLIDER)->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_COMBOFILETYPE)->ModifyStyle(0,WS_VISIBLE,0);
GetDlgItem(IDC_SEARCHLIST)->ModifyStyle(0,WS_VISIBLE,0);
GetDlgItem(IDC_CAPPIC)->ModifyStyle(0,WS_VISIBLE,0);
//the only for single play
GetDlgItem(IDC_DOWNLOAD)->ModifyStyle(0,WS_VISIBLE,0);
GetDlgItem(IDC_REMOTEFILRLIST)->ModifyStyle(0,WS_VISIBLE,0);
if(m_bDown)
GetDlgItem(IDC_DOWNPROGRESS)->ModifyStyle(0,WS_VISIBLE,0);
GetDlgItem(IDC_STEP)->ModifyStyle(0,WS_VISIBLE,0);
GetDlgItem(IDC_GOTOSTART)->ModifyStyle(0,WS_VISIBLE,0);
}
else
{
//THE same to multiplay
GetDlgItem(IDC_PLAYSTATUS)->ModifyStyle(WS_VISIBLE,0,0);
GetDlgItem(IDC_PLAY_FILE)->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_SOUND)->ModifyStyle(WS_VISIBLE,0,0);
GetDlgItem(IDC_VOLUME_SLIDER)->ModifyStyle(WS_VISIBLE,0,0);
GetDlgItem(IDC_PROGRESS_SLIDER)->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_COMBOFILETYPE)->ModifyStyle(WS_VISIBLE,0,0);
GetDlgItem(IDC_SEARCHLIST)->ModifyStyle(WS_VISIBLE,0,0);
GetDlgItem(IDC_CAPPIC)->ModifyStyle(WS_VISIBLE,0,0);
//the only for single play
GetDlgItem(IDC_REMOTEFILRLIST)->ModifyStyle(WS_VISIBLE,0,0);
GetDlgItem(IDC_STEP)->ModifyStyle(WS_VISIBLE,0,0);
GetDlgItem(IDC_GOTOSTART)->ModifyStyle(WS_VISIBLE,0,0);
GetDlgItem(IDC_DOWNLOAD)->ModifyStyle(WS_VISIBLE,0,0);
GetDlgItem(IDC_DOWNPROGRESS)->ModifyStyle(WS_VISIBLE,0,0);
}
}
BOOL CRemoteFilePlay::IsInWnd(CPoint point)
{
CRect rc;
GetDlgItem(IDC_WND)->GetWindowRect(&rc);
ScreenToClient(&rc);
if(PtInRect(&rc,point))
return TRUE;
else
return FALSE;
}
void CRemoteFilePlay::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 CRemoteFilePlay::OnSelchangeComboserver()
{
// TODO: Add your control notification handler code here
iSelServer = m_ServerCtrl.GetCurSel() - 1;
if(iSelServer < 0)
return;
m_lServerID = serverinfo[iSelServer].m_lServerID;
m_lServerType = serverinfo[iSelServer].m_wServerType;
m_lStartChan = serverinfo[iSelServer].m_lStartChannel;
int m_iChanNum = serverinfo[iSelServer].m_iServerChannelNumber;
m_ChannelCtrl.ResetContent();
CString sTemp;
for(int i=0; i<m_iChanNum; i++)
{
sTemp.Format("%d", i+m_lStartChan);
m_ChannelCtrl.AddString(sTemp);
}
m_iChannel = 0;
m_ChannelCtrl.SetCurSel(m_iChannel);
m_FileType.ResetContent();
if(m_lServerType == ATMDVR) //ATM DVR
{
m_FileType.AddString("All");
m_FileType.AddString("Schedule");
m_FileType.AddString("Motion Detect");
m_FileType.AddString("Approach Alarm");
m_FileType.AddString("Cash Out Alarm");
m_FileType.AddString("Cash In Alarm");
m_FileType.AddString("Command Record");
m_FileType.AddString("Manual Record");
m_FileType.AddString("Vibration Alarm");
if (serverinfo[iSelServer].m_dwAlarmInNum == 5)
{
m_FileType.AddString("Enviroment Touch");
}
}
if(m_lServerType == DVR || m_lServerType >= DVR_HC) //DVR
{
m_FileType.AddString("All");
m_FileType.AddString("Schedule");
m_FileType.AddString("Motion Detect");
m_FileType.AddString("Alarm");
m_FileType.AddString("Alarm|Motion");
m_FileType.AddString("Alarm&Motion");
m_FileType.AddString("Command Record");
m_FileType.AddString("Manual Record");
}
iFileType = 0;
m_FileType.SetCurSel(iFileType);
}
void CRemoteFilePlay::OnCancel()
{
// TODO: Add extra cleanup here
//CDialog::OnCancel();
}
void CRemoteFilePlay::OnButtonsave()
{
// TODO: Add your control notification handler code here
//2005-01-04
static char szFilter[]="All File(*.mp4)|*.*||";
char m_sFile[256] = "c:\\Savefile.mp4";
CString csFile;
CFileDialog dlg(FALSE,"*.mp4","Savefile.mp4",OFN_OVERWRITEPROMPT|OFN_HIDEREADONLY,
szFilter);
if(dlg.DoModal()==IDOK)
{
csFile = dlg.GetPathName();
UpdateData(FALSE);
sprintf(m_sFile, "%s", csFile);
}
if(NET_DVR_PlayBackSaveData(m_nPlayHandle, m_sFile))
{
m_bSaveFile = TRUE;
}
else
{
AfxMessageBox("Save file failed!");
}
}
void CRemoteFilePlay::OnButtonstopsave()
{
// TODO: Add your control notification handler code here
if(m_bSaveFile)
{
NET_DVR_StopPlayBackSave(m_nPlayHandle);
m_bSaveFile = FALSE;
AfxMessageBox("Stop saving file!");
}
}
//2005-01-04
//DEL void CRemoteFilePlay::OnButplay()
//DEL {
//DEL // TODO: Add your control notification handler code here
//DEL UpdateData(TRUE);
//DEL int fileselpos = 0;
//DEL CString csFileName;
//DEL POSITION pos = m_Filelist.GetFirstSelectedItemPosition();
//DEL if(pos == NULL)
//DEL {
//DEL AfxMessageBox("Please select file!");
//DEL return;
//DEL }
//DEL
//DEL fileselpos = m_Filelist.GetNextSelectedItem(pos);
//DEL csFileName.Format("%s",m_Filelist.GetItemText(fileselpos,0));
//DEL if(csFileName.IsEmpty())
//DEL return;
//DEL TRACE("Remote playback file:%s \n", csFileName);
//DEL sprintf(filename,"%s",csFileName);
//DEL // if(NET_DVR_PlayBackByNameLocDisplay(m_lServerID, filename))
//DEL {
//DEL TRACE("Remote control DVR local playback!");
//DEL }
//DEL }
//DEL void CRemoteFilePlay::OnButstop()
//DEL {
//DEL // TODO: Add your control notification handler code here
//DEL // if(NET_DVR_StopLocDisplayPlay(m_lServerID))
//DEL {
//DEL TRACE("Stop remote control DVR local playback!");
//DEL }
//DEL }
void CRemoteFilePlay::OnGotostart()
{
// TODO: Add your control notification handler code here
NET_DVR_PlayBackControl(m_nPlayHandle,NET_DVR_PLAYSETPOS, 0, NULL);
}
void CRemoteFilePlay::OnOK()
{
// TODO: Add extra cleanup here
// CDialog::OnOK();
}
void CRemoteFilePlay::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
TRACE("point.x is %d, point.y is %d\n", point.x, point.y);
CDialog::OnLButtonDown(nFlags, point);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -