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

📄 remotefileplay.cpp

📁 SDK DVR/DVS HIKVISION
💻 CPP
📖 第 1 页 / 共 3 页
字号:
		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 + -