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

📄 localfileplay.cpp

📁 SDK DVR/DVS HIKVISION
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	// TODO: Add your control notification handler code here
	if(m_bPause)
		F_Pause();
	PlayM4_OneByOneBack(USED_PORT);
	m_bStep=TRUE;
	F_SetPauseState();
}

void CLocalFilePlay::OnStep() 
{
	// TODO: Add your control notification handler code here
	if(m_bPause)
		F_Pause();
	PlayM4_OneByOne(USED_PORT);
	m_bStep=TRUE;
	F_SetPauseState();
}

void CLocalFilePlay::OnSound() 
{
	// TODO: Add your control notification handler code here
	F_Sound(!m_bSound);
}

void CLocalFilePlay::OnDestroy() 
{
	F_Stop();
	CDialog::OnDestroy();
	
	// TODO: Add your message handler code here
	
}

void CLocalFilePlay::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
{
	// TODO: Add your message handler code here and/or call default
	if(pScrollBar->m_hWnd==m_ctlProgress.m_hWnd&&m_bPlay)
	{
		PlayM4_SetPlayedTimeEx(USED_PORT,m_iTotalSeconds*m_ctlProgress.GetPos()*10);
	}
	else if(pScrollBar->m_hWnd==m_ctlVolume.m_hWnd&&m_bSound)
	{
		PlayM4_SetVolume(USED_PORT,(WORD)m_ctlVolume.GetPos());
	}
	CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}

void CLocalFilePlay::OnLButtonDblClk(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	if(IsInWnd(point)&&m_bPlay)
	{
		m_bFullScreen=!m_bFullScreen;
		if(m_bFullScreen)
			F_ShowFullScreen();
		else
			F_ShowNormal();
		PlayM4_RefreshPlay(USED_PORT);
	}
	CDialog::OnLButtonDblClk(nFlags, point);
}

BOOL CLocalFilePlay::IsInWnd(CPoint point)
{
	CRect rc;
	GetDlgItem(IDC_WND)->GetWindowRect(&rc);
	ScreenToClient(&rc);
	if(PtInRect(&rc,point))
		return TRUE;
	else
		return FALSE;
}

void CLocalFilePlay::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	
	// TODO: Add your message handler code here
	CWnd *pWnd=GetDlgItem(IDC_WND);
	pWnd->Invalidate();
	pWnd->UpdateWindow();
	
	PlayM4_RefreshPlay(USED_PORT);
	// Do not call CDialog::OnPaint() for painting messages
}

void CLocalFilePlay::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	if(nIDEvent==PLAY_TIMER)
	{
		F_ShowStatus();
	}
	CDialog::OnTimer(nIDEvent);
}


void CLocalFilePlay::F_ShowStatus()
{
	//保护。
	if(m_iTotalSeconds<=0)
		return;
	DWORD nCurSecond=PlayM4_GetPlayedTime(USED_PORT);
	m_ctlProgress.SetPos(nCurSecond*100/m_iTotalSeconds);
	CString csStatus;
	csStatus.Format("%02d:%02d:%02d/%02d:%02d:%02d",\
		nCurSecond/3600,(nCurSecond%3600)/60,nCurSecond%60,\
		m_iTotalSeconds/3600,(m_iTotalSeconds%3600)/60,m_iTotalSeconds%60);
	
	GetDlgItem(IDC_PLAYSTATUS)->SetWindowText(csStatus);
}

void CLocalFilePlay::F_Stop()
{
	m_bPause=FALSE;
	if(m_bPlay)
	{
		m_bPlay=FALSE;
		PlayM4_Stop(USED_PORT);
		PlayM4_CloseFile(USED_PORT);
		if(m_bSound)
			F_Sound(FALSE);
		F_SetStopState();
	}
}

void CLocalFilePlay::F_InitUI()
{
	//Initialize button
	CButton *pButton;
	
	m_rcScreen=CRect(0,0,GetSystemMetrics(SM_CXSCREEN),GetSystemMetrics(SM_CYSCREEN));
	//Initialize slider
	m_ctlProgress.SetRange(0,100);
	m_ctlProgress.SetPos(0);
	m_ctlVolume.SetRange(0,0xffff);
	m_ctlVolume.SetPos(0x7fff);
	m_ctlProgress.EnableWindow(FALSE);
	m_ctlVolume.EnableWindow(FALSE);
	
	pButton = (CButton *)GetDlgItem(IDC_PLAY_FILE);
	pButton->SetIcon(m_hPlayDisableIcon);
	pButton->EnableWindow(FALSE);
	
	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_STEP);
	pButton->SetIcon(m_hStepDisableIcon);
	pButton->EnableWindow(FALSE);
	
	pButton = (CButton *)GetDlgItem(IDC_STEPBACK);
	pButton->SetIcon(m_hStepBackDisableIcon);
	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);
}

/*****************************************************
Function: Check start time and end time
******************************************************/
BOOL CLocalFilePlay::F_CheckDate(CTime tFrom, CTime tTo)
{
	if(tFrom.GetYear() > tTo.GetYear())
		return FALSE;
	else
	{
		if(tFrom.GetYear() == tTo.GetYear())
		{
			if(tFrom.GetMonth() > tTo.GetMonth())
				return FALSE;
			else
			{
				if(tFrom.GetMonth() == tTo.GetMonth())
				{
					if(tFrom.GetDay() > tTo.GetDay())
						return FALSE;
					else
					{
						if(tFrom.GetDay() == tTo.GetDay())
						{
							if(tFrom.GetHour() > tTo.GetHour())
								return FALSE;
							else
							{
								if(tFrom.GetHour() == tTo.GetHour())
								{
									if(tFrom.GetMinute() > tTo.GetMinute())
										return FALSE;
									else
									{
										if(tFrom.GetMinute() == tTo.GetMinute())
										{
											if(tFrom.GetSecond() > tTo.GetSecond())
												return FALSE;
										}
									}
								}
							}
						}
					}
				}
			}
		}
	}
	return TRUE;
}

/*************************************
Function: Search download files and list
iFileType:1-Normal,2-Alarm,3-Download
**************************************/
int CLocalFilePlay::F_ShowlocalFile(CString csIP,int iFileType,int iChanNum, CTime tFrom, CTime tTo)
{
	CString sTemp, sTemp1;
	UINT i=0; int j;
	CTime tFileTime;
	CString	csType;
	CString csDir, csChildDir, csFindFile, csFileName;
	CFileFind fddirectory,fdmpeg4file;
	BOOL bFinded, bFindFile;

	CNewclientApp* pApp =  (CNewclientApp*)AfxGetApp();

	switch(iFileType)
	{
	case 1:
		csType.Format(_T("Normal"));
		for(j = ClientParam.m_iStartRecordDriver; j < ClientParam.m_iEndRecordDriver + 1; j++)
		{
			csDir.Format("%c:\\mpeg4record\\*.*", pApp->m_cHardDriver[j]);
			bFinded=fddirectory.FindFile(csDir);
			while(bFinded)
			{
				bFinded=fddirectory.FindNextFile();
				if (fddirectory.IsDots())
				{
					continue;
				}
				if (fddirectory.IsDirectory())
				{
					csChildDir.Format("%c:\\mpeg4record\\%s",pApp->m_cHardDriver[j],fddirectory.GetFileName());
					csFindFile.Format("%s\\%s_%02d*.mp4",csChildDir, csIP, iChanNum);
					TRACE("Begin to find the following files: %s", csFindFile);
					bFindFile=fdmpeg4file.FindFile(csFindFile);
					while(bFindFile)
					{
						bFindFile = fdmpeg4file.FindNextFile();
						if(fdmpeg4file.IsDots())
							continue;
						csFileName.Format("%s\\%s", csChildDir, fdmpeg4file.GetFileName());
						TRACE("The finded file name: %s", csFileName);
						fdmpeg4file.GetCreationTime(tFileTime);
						if(F_CheckDate(tFrom, tFileTime) && F_CheckDate(tFileTime, tTo))
						{
							m_locFileList.InsertItem(m_iTSum,csFileName,0);
							sTemp.Format("%d",iChanNum);
							m_locFileList.SetItemText(m_iTSum,1,sTemp);
							m_locFileList.SetItemText(m_iTSum,2,csType);
							m_locFileList.SetItemText(m_iTSum,3,tFileTime.Format("%Y%m%d %H:%M:%S"));
							fdmpeg4file.GetLastWriteTime(tFileTime);
							m_locFileList.SetItemText(m_iTSum,4,tFileTime.Format("%Y%m%d %H:%M:%S"));
							i++;
							m_iTSum++;
						}
					}
				}
			}
		}
		break;
	case 2:

		break;
	case 3:
		i = F_ShowDownloadFile(csIP, iChanNum, tFrom, tTo);
		break;
	default:
		return 0;
		break;
	}
	return i;
}

int CLocalFilePlay::F_ShowDownloadFile(CString csIP,int iChanNum, CTime tFrom, CTime tTo)
{
	//
	char buffer[200];
	char buf_channel[4];
	CString sTemp, sTemp1;
	int i=0;
	WIN32_FIND_DATA FindFileData;
	HANDLE hFind;
	CTime tFileTime;
	CString	csType;
	
	sprintf(buf_channel,"%02d",iChanNum);
	strcpy(buffer,ClientParam.m_csDownLoadPath);
	strcat(buffer,"\\");
	strcat(buffer,csIP);
	strcat(buffer,"_");
	strcat(buffer,buf_channel);
	strcat(buffer,"_D*.mp4");
	csType.Format(_T("Download"));
	sTemp1.Format("%s", ClientParam.m_csDownLoadPath);
	
	hFind = FindFirstFile(buffer, &FindFileData);
	if (hFind == INVALID_HANDLE_VALUE)
	{
		FindClose(hFind);
		return 0;
	}
	else
	{
		tFileTime = CTime((const FILETIME&)(FindFileData.ftCreationTime));
		if (F_CheckDate( tFrom, tFileTime) && F_CheckDate(tFileTime, tTo))
		{
			sTemp.Format("%s\\%s",sTemp1,FindFileData.cFileName);
			m_locFileList.InsertItem(m_iTSum,sTemp,0);
			sTemp.Format("%d",iChanNum);
			m_locFileList.SetItemText(m_iTSum,1,sTemp);
			m_locFileList.SetItemText(m_iTSum,2,csType);
			m_locFileList.SetItemText(m_iTSum,3,tFileTime.Format("%Y%m%d %H:%M:%S"));
			tFileTime = CTime( (const FILETIME&)(FindFileData.ftLastWriteTime));
			m_locFileList.SetItemText(m_iTSum,4,tFileTime.Format("%Y%m%d %H:%M:%S"));
			i++;
			m_iTSum++;
		}
	}
	while (FindNextFile(hFind,&FindFileData))
	{
		tFileTime = CTime( (const FILETIME&)(FindFileData.ftCreationTime));
		if (F_CheckDate(tFrom, tFileTime) && F_CheckDate(tFileTime, tTo))
		{
			sTemp.Format("%s\\%s",sTemp1,FindFileData.cFileName);
			m_locFileList.InsertItem(m_iTSum,sTemp,0);
			sTemp.Format("%d",iChanNum);
			m_locFileList.SetItemText(m_iTSum,1,sTemp);
			m_locFileList.SetItemText(m_iTSum,2,csType);
			m_locFileList.SetItemText(m_iTSum,3,tFileTime.Format("%Y%m%d %H:%M:%S"));
			tFileTime = CTime( (const FILETIME&)(FindFileData.ftLastWriteTime));
			m_locFileList.SetItemText(m_iTSum,4,tFileTime.Format("%Y%m%d %H:%M:%S"));
			i++;
			m_iTSum++;
		}
	}
	return i;
}

void CLocalFilePlay::F_SetStopState()
{
	CButton *pButton;
	
	m_ctlProgress.SetPos(0);
	m_ctlProgress.EnableWindow(FALSE);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -