📄 remotetimeplay.cpp
字号:
// RemoteTimePlay.cpp : implementation file
//
#include "stdafx.h"
#include "newclient.h"
#include "RemoteTimePlay.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CRemoteTimePlay dialog
extern SERVER_INFO serverinfo[MAXIPNUMBER];
extern CLIENTPARAM ClientParam;
CRemoteTimePlay::CRemoteTimePlay(CWnd* pParent /*=NULL*/)
: CDialog(CRemoteTimePlay::IDD, pParent)
{
//{{AFX_DATA_INIT(CRemoteTimePlay)
m_ctDateStart = 0;
m_ctDateStop = 0;
m_ctTimeStart = 0;
m_ctTimeStop = 0;
//}}AFX_DATA_INIT
m_hPlayEnableIcon = AfxGetApp()->LoadIcon(IDI_PLAY_ENABLE);
m_hPlayDisableIcon = AfxGetApp()->LoadIcon(IDI_PLAY_DISABLE);
m_hPauseEnableIcon = AfxGetApp()->LoadIcon(IDI_PAUSE_ENABLE);
m_hPauseDisableIcon = AfxGetApp()->LoadIcon(IDI_PAUSE_DISABLE);
m_hStopEnableIcon = AfxGetApp()->LoadIcon(IDI_STOP_ENABLE);
m_hStopDisableIcon = AfxGetApp()->LoadIcon(IDI_STOP_DISABLE);
m_hSoundStartIcon= AfxGetApp()->LoadIcon(IDI_SOUND_ENABLE);
m_hSoundStopIcon= AfxGetApp()->LoadIcon(IDI_SOUND_DISABLE);
m_hGotoTailDisableIcon = AfxGetApp()->LoadIcon(IDI_GOTOEND_DISABLE);
m_hFastDisableIcon = AfxGetApp()->LoadIcon(IDI_FASTFORWARD_DISABLE);
m_hSlowDisableIcon= AfxGetApp()->LoadIcon(IDI_FASTBACKWARD_DISABLE);
m_hGotoTailEnableIcon = AfxGetApp()->LoadIcon(IDI_GOTOEND_ENABLE);
m_hFastEnableIcon = AfxGetApp()->LoadIcon(IDI_FASTFORWARD_ENABLE);
m_hSlowEnableIcon = AfxGetApp()->LoadIcon(IDI_FASTBACKWARD_ENABLE);
m_hStepBackEnableIcon = AfxGetApp()->LoadIcon(IDI_STEPBACK_ENABLE);
m_hStepBackDisableIcon = AfxGetApp()->LoadIcon(IDI_STEPBACK_DISABLE);
m_hCaptureIcon = AfxGetApp()->LoadIcon(IDI_PIC);
}
void CRemoteTimePlay::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CRemoteTimePlay)
DDX_Control(pDX, IDC_WND, m_PlayWnd);
DDX_Control(pDX, IDC_VOLUME_SLIDER, m_ctlVolume);
DDX_Control(pDX, IDC_COMBOSERVER, m_ServerName);
DDX_Control(pDX, IDC_COMBOPORT, m_ChannelName);
DDX_DateTimeCtrl(pDX, IDC_DATESTART, m_ctDateStart);
DDX_DateTimeCtrl(pDX, IDC_DATESTOP, m_ctDateStop);
DDX_DateTimeCtrl(pDX, IDC_TIMESTART, m_ctTimeStart);
DDX_DateTimeCtrl(pDX, IDC_TIMESTOP, m_ctTimeStop);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CRemoteTimePlay, CDialog)
//{{AFX_MSG_MAP(CRemoteTimePlay)
ON_BN_CLICKED(IDC_STOP, OnStop)
ON_BN_CLICKED(IDC_SLOW, OnSlow)
ON_BN_CLICKED(IDC_FAST, OnFast)
ON_BN_CLICKED(IDC_CAPPIC, OnCappic)
ON_BN_CLICKED(IDC_STEP, OnStep)
ON_BN_CLICKED(IDC_SOUND, OnSound)
ON_WM_HSCROLL()
ON_WM_LBUTTONDBLCLK()
ON_BN_CLICKED(IDC_PLAY_TIME, OnPlayTime)
ON_CBN_SELCHANGE(IDC_COMBOSERVER, OnSelchangeComboserver)
ON_WM_TIMER()
ON_BN_CLICKED(IDC_BUTTONDOWNLOAD, OnButtondownload)
ON_BN_CLICKED(IDC_BUTTONLOADSAVE, OnButtonloadsave)
ON_BN_CLICKED(IDC_GOTOSTART, OnGotostart)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CRemoteTimePlay message handlers
void CRemoteTimePlay::SetParentWnd(HWND *hhWnd, int iParentNum)
{
VERIFY(iParentNum==2);
m_hPareDlgWnd=hhWnd[0];
m_hPareTabWnd=hhWnd[1];
}
BOOL CRemoteTimePlay::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
CRect rc(0, 0, 0, 0);
GetParent()->GetClientRect(&rc);
((CTabCtrl*)GetParent())->AdjustRect(FALSE, &rc);
MoveWindow(&rc);
F_InitUI();
m_bPause=FALSE;
m_bDown = FALSE;
m_bTimeSave = FALSE;
m_ServerName.AddString("Please select DVR");
for(int i = 0; i < MAXIPNUMBER; i++)
{
if(serverinfo[i].m_csServerName != "")
m_ServerName.AddString(serverinfo[i].m_csServerName);
}
m_ServerName.SetCurSel(0);
m_ChannelName.SetCurSel(1);
CTime time1 = CTime::GetCurrentTime();
CTime time(time1.GetYear(),time1.GetMonth(),time1.GetDay(),0,0,0);
CTime time0(time1.GetYear(),time1.GetMonth(),time1.GetDay(),23,59,59);
m_ctDateStart = time;
m_ctTimeStart = time;
m_ctDateStop = time1;
m_ctTimeStop = time0;
m_ctlVolume.SetRange(1, 100, TRUE);
m_ctlVolume.SetPos(50);
lHandle = -1;
m_lLoadHandle = -1;
m_bSound = FALSE;
m_bFullScreen = FALSE;
m_hPareDlgWnd = NULL;
m_hPareTabWnd = NULL;
m_lStartChan = 0;
GetDlgItem(IDC_WND)->GetWindowRect(m_rcWnd);
ScreenToClient(m_rcWnd);
m_rcScreen=CRect(0,0,GetSystemMetrics(SM_CXSCREEN),GetSystemMetrics(SM_CYSCREEN));
UpdateData(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CRemoteTimePlay::OnPlayTime()
{
// TODO: Add your control notification handler code here
NET_DVR_TIME StartTime,StopTime;
UpdateData(TRUE);
if(lHandle == -1)
{
if(m_ServerName.GetCurSel() == 0)
{
AfxMessageBox("Please select DVR!");
return;
}
//ServerID = serverinfo[i].m_lServerID;
iChannel = m_ChannelName.GetCurSel()+m_lStartChan;
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();
lHandle = NET_DVR_PlayBackByTime(ServerID, iChannel, &StartTime, &StopTime, m_PlayWnd.GetSafeHwnd());
if(lHandle == -1)
{
AfxMessageBox("Remote playback failed!");
return;
}
NET_DVR_PlayBackControl(lHandle, NET_DVR_PLAYSTART, 0, NULL);
if(NET_DVR_PlayBackControl(lHandle, NET_DVR_PLAYSTARTAUDIO, 0, NULL))
{
m_bSound=TRUE;
NET_DVR_PlayBackControl(lHandle, 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);
}
F_SetPlayState();
SetTimer(PLAYBYTIME_TIMER,2000,NULL);
}
else
{
if(m_bPause)
{
if(NET_DVR_PlayBackControl(lHandle, NET_DVR_PLAYRESTART, 0, NULL))
{
m_bPause=FALSE;
F_SetPlayState();
}
}
else
{
if(NET_DVR_PlayBackControl(lHandle, NET_DVR_PLAYPAUSE, 0, NULL))
{
TRACE("handle:%d \n",lHandle);
m_bPause=TRUE;
CButton *pButton;
pButton = (CButton *)GetDlgItem(IDC_PLAY_TIME);
pButton->SetIcon(m_hPlayEnableIcon);
pButton->EnableWindow(TRUE);
}
}
}
}
void CRemoteTimePlay::OnStop()
{
// TODO: Add your control notification handler code here
F_StopPlay();
}
void CRemoteTimePlay::F_StopPlay()
{
CButton *pButton;
if(lHandle >= 0)
{
if(m_bFullScreen)
{
m_bFullScreen = FALSE;
F_ShowNormal();
}
if(m_bTimeSave)
{
NET_DVR_StopPlayBackSave(lHandle);
m_bTimeSave = FALSE;
GetDlgItem(IDC_BUTTONLOADSAVE)->SetWindowText("保存");
}
NET_DVR_PlayBackControl(lHandle, NET_DVR_PLAYSTOPAUDIO, 0, NULL);
NET_DVR_StopPlayBack(lHandle);
lHandle = -1;
Invalidate(TRUE);
UpdateData(FALSE);
KillTimer(PLAYBYTIME_TIMER);
}
m_bSound=FALSE;
m_bPause = FALSE;
m_ctlVolume.EnableWindow(FALSE);
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_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 CRemoteTimePlay::OnSlow()
{
// TODO: Add your control notification handler code here
NET_DVR_PlayBackControl(lHandle, NET_DVR_PLAYSLOW, 0, NULL);
}
void CRemoteTimePlay::OnFast()
{
// TODO: Add your control notification handler code here
NET_DVR_PlayBackControl(lHandle, NET_DVR_PLAYFAST, 0, NULL);
}
void CRemoteTimePlay::OnCappic()
{
// TODO: Add your control notification handler code here
char cFilename[256];
sprintf(cFilename, "%s\\%d_%d.bmp",ClientParam.m_csPictureSavePath,iChannel, GetTickCount());
if(NET_DVR_PlayBackCaptureFile(lHandle,cFilename))
{
CString sTemp;
sTemp.Format("Capture picture succeed %s!",cFilename);
AfxMessageBox(sTemp);
return;
}
else
{
AfxMessageBox("Capture failed!");
}
}
void CRemoteTimePlay::OnStep()
{
// TODO: Add your control notification handler code here
}
void CRemoteTimePlay::OnSound()
{
// TODO: Add your control notification handler code here
CButton *pButton;
if(lHandle >= 0)
{
if(m_bSound)
{
if(NET_DVR_PlayBackControl(lHandle, NET_DVR_PLAYSTOPAUDIO, 0, NULL))
{
m_bSound=FALSE;
pButton = (CButton *)GetDlgItem(IDC_SOUND);
pButton->SetIcon(m_hSoundStopIcon);
}
}
else
{
if(NET_DVR_PlayBackControl(lHandle, NET_DVR_PLAYSTARTAUDIO, 0, NULL))
{
pButton = (CButton *)GetDlgItem(IDC_SOUND);
pButton->SetIcon(m_hSoundStartIcon);
m_bSound=TRUE;
}
}
}
}
void CRemoteTimePlay::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: Add your message handler code here and/or call default
if (GetDlgItem(IDC_VOLUME_SLIDER) == pScrollBar)
{
char volume;
WORD temp, volumevalue;
temp = (0xffff)/100;
volume = m_ctlVolume.GetPos();
volumevalue = volume*temp;
if(lHandle >= 0)
NET_DVR_PlayBackControl(lHandle, NET_DVR_PLAYAUDIOVOLUME, volumevalue, NULL);
}
CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}
void CRemoteTimePlay::OnLButtonDblClk(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if( (IsInWnd(point)) && (lHandle >= 0) )
{
m_bFullScreen=!m_bFullScreen;
if(m_bFullScreen)
F_ShowFullScreen();
else
F_ShowNormal();
NET_DVR_RefreshPlay(lHandle);
}
CDialog::OnLButtonDblClk(nFlags, point);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -