📄 localfileplay.cpp
字号:
// 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 + -