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

📄 rightvod.cpp

📁 实时监控
💻 CPP
📖 第 1 页 / 共 2 页
字号:
			m_date.ResetContent();
			for( int i=0; i<allnum; i++ )
			{
				CString str;
				TREC_DATE* p;
				if(l == OPT_VOD_DATE)
					p = &opt1.rec_date[i];
				if(l == OPT_VOD_DATE_EXT)
					p = &opt3.rec_date[i];
			
				if( p->month == 0 )
					continue;
				
				/*	2003-10-17, nodman
				 *	修正: "2003-42-1"
				 *	主机传来的日期格式有误
				 */
				if( p->month > 32 )
				{
					p->month -= 32;
				}

#define FMT_ERR_AND_RETURN	{MessageBox(FMTERROR); save_log("date_fmt.log", pdate, sizeof(opt1)); return 0;}

				if(!(p->day >= 1 && p->day <= 31)) FMT_ERR_AND_RETURN;
				if(!(p->month >= 1 && p->month <= 12)) FMT_ERR_AND_RETURN;
				if(!(p->year >= 2000 && p->year < 2100)) FMT_ERR_AND_RETURN;

				str.Format(date_format, p->year, p->month, p->day);
				// e.g. "2003-08-20"
				/*	修正: 2003-10-15
				 *	不允许有重复的日期
				 */
				if( m_date.FindString(-1, str) == -1 )
				{
					int idx = m_date.AddString(str);
					
					/*
					byte x[4];
					x[0] = p->year - 2000;
					x[1] = p->month;
					x[2] = p->day;
					x[3] = 0;
					*/
					m_date.SetItemData(idx, i);
				}
			}
			//m_date.SetRedraw();
		}
		if( l == OPT_VOD_FILE || l == OPT_VOD_FILE_EXT)
		{
			int filenum = 0;
			if(l == OPT_VOD_FILE)
				filenum = opt2.num;
			if(l == OPT_VOD_FILE_EXT)
				filenum = opt4.num;

			m_files.SetRedraw(FALSE);
			m_files.ResetContent();
			for( int i=0; i<filenum; i++ )
			{
				CString str;
				TREC_FILESEG* f ;
				if(l == OPT_VOD_FILE)
					f = &opt2.rec_fileseg[i];
				if(l == OPT_VOD_FILE_EXT)
					f = &opt4.rec_fileseg[i];

				if( f->bgn_hour < 0 || f->bgn_hour > 23 )
					return 0;
				if( f->end_hour < 0 || f->bgn_hour > 23 )
					return 0;
				if( f->bgn_minute < 0 || f->bgn_minute > 59 )
					return 0;
				if( f->end_minute < 0 || f->end_minute > 59 )
					return 0;
				if( f->bgn_second < 0 || f->bgn_second > 59 )
					return 0;
				if( f->end_second < 0 || f->end_second > 59 )
					return 0;

				str.Format(file_format, 
					f->bgn_hour, f->bgn_minute, f->bgn_second,
					f->end_hour, f->end_minute, f->end_second,
					add_comma(f->size));
				int idx = m_files.AddString(str);

				m_files.SetItemData(idx, i);
			}
			m_files.SetRedraw();
		}
	}
	UpdateData(w);
	return 0;
}

//##ModelId=3F90BAAB01EC
void CRightVOD::OnSelchangeDate() 
{
	m_files.ResetContent();
	UpdateData(true);
	GET_ALIAS;
	int m_data[4];
	TREC_DATE* p;
	
	int idx = m_date.GetCurSel();
	if( idx == -1 )
		return;
	idx = m_date.GetItemData(idx);

	int allcount = m_date.GetCount();
	if(allcount >= 255)
		p = &opt3.rec_date[idx];
	else
		p = &opt1.rec_date[idx];

	byte x[5];
	x[0] = p->year - 2000;
	x[1] = p->month;
	x[2] = p->day;
	
	int index = m_tabctrl.GetCurSel();
	switch(index) {
	case 0: 
		x[3] = m_channel;
		break;
	case 1: 
		x[3] = m_channel+100;
		break;
	default: ;
	}	
		
	if(m_handrec)   m_data[0]=1;
	else m_data[0]=0;
	if(m_timerec)   m_data[1]=1;
	else m_data[1]=0;
	if(m_motionrec) m_data[2]=1;
	else m_data[2]=0;
	if(m_alarmrec)  m_data[3]=1;
	else m_data[3]=0;
	
	x[4]=m_data[0]+m_data[1]*2+m_data[2]*4+m_data[3]*8;
	get_net_opt_file(alias, x, m_hWnd);
}



//##ModelId=3F90BAAB0110
BOOL CRightVOD::PreTranslateMessage(MSG* msg)
{
	if( msg->message == WM_LBUTTONDBLCLK )
	{
		if( msg->hwnd == m_date.m_hWnd )
			OnSelchangeDate();
		if( msg->hwnd == m_files.m_hWnd )
			OnSelchangeFiles();
	}
	return baseclass::PreTranslateMessage(msg);
}

//##ModelId=3F90BAAB01E2
void CRightVOD::OnSelchangeFiles() 
{

	OnPlay();
}

//##ModelId=3F90BAAB0200
void CRightVOD::OnDate() 
{
	int idx = m_date.GetCurSel();
	if( idx == -1 )
		return;

	idx = m_date.GetItemData(idx);

	CString str;
	TREC_DATE *p;

	int allcount = m_date.GetCount();
	if(allcount >= 255)
		p = &opt3.rec_date[idx];
	else
		p = &opt1.rec_date[idx];
	
	str.Format(date_format, p->year, p->month, p->day);
	m_startdate.SetText(str);
	start_ft.year = p->year-2000;
	start_ft.month = p->month;
	start_ft.day = p->day;

	OnSelchangeDate();
}

//##ModelId=3F90BAAB023D
void CRightVOD::OnFiles() 
{
	int idx = m_files.GetCurSel();
	if( idx == -1 )
		return;
	idx = m_files.GetItemData(idx);
	int allcount = m_files.GetCount();

	TREC_FILESEG* pf;
	if(allcount >= 255)
		pf = &opt4.rec_fileseg[idx];
	else
		pf = &opt2.rec_fileseg[idx];

	m_starttime = CTime(2003, 12, 20, pf->bgn_hour, pf->bgn_minute, pf->bgn_second);
	UpdateData(FALSE);
}
//##ModelId=3F90BAAB020A
void CRightVOD::OnPlay() 
{
    video_channel* p = video_channel::current_sel();
	VOD_SPEED vs = get_vod_speed();
	if( p->is_video_opened()&& p->is_vod() && vs != VS_PLAYx1)
	{
		VOD_SPEED vs = VS_PLAYx1;
		CRightLogin::the_one()->SendMessage(WM_SET_VOD_SPEED, vs);
		UpdateData();
		return;
	}
	GET_ALIAS;

	ULONG ip;
	USHORT port;
	get_addr(alias, ip, port);
	ip_port ipp(ip, port);

	/*
	 *	日期:根据用户在Date列表框中的选择
	 *	时间:根据用户在Files列表框中的选择, 并且可以任意指定
	 */
	start_ft.channel = m_channel;

	start_ft.hour = m_starttime.GetHour();
	start_ft.minute = m_starttime.GetMinute();
	start_ft.second = m_starttime.GetSecond();

	if(!check_popedom(ip, port, m_channel+1, 10)) return;
	CRightLogin::the_one()->SendMessage(WM_OPEN_VOD, (WPARAM)&start_ft, (LPARAM)&ipp);
   
	CString m_logfile;
    m_logfile.Format(IDS_VOD_RECORDING,alias,m_channel+1);
    write_log_file(m_logfile);
}

//##ModelId=3F90BAAB021E
void CRightVOD::OnStop() 
{
	CRightLogin::the_one()->SendMessage(WM_CLOSE_VOD);
	UpdateData();
}

//##ModelId=3F90BAAB0214
void CRightVOD::OnPause()
{
	CRightLogin::the_one()->SendMessage(WM_SET_VOD_SPEED, VS_PAUSE);
	UpdateData();
}

//##ModelId=3F90BAAB0229
void CRightVOD::OnFf() 
{
	video_channel* p = video_channel::current_sel();
	if( !vod_opened[p->index()] )
		return;

	VOD_SPEED vs = get_vod_speed();
	switch(vs)
	{
	case VS_FFx1:
		vs = VS_FFx2;
		break;
	case VS_FFx2:
		vs = VS_FFx3;
		break;
	case VS_FFx3:
		vs = VS_FFx4;
		break;
	case VS_FFx4:
		vs = VS_FFx1;
		break;
	case VS_PLAYx1:
	default:
		vs = VS_FFx1;
		break;
	}
	CRightLogin::the_one()->SendMessage(WM_SET_VOD_SPEED, vs);
	UpdateData(true);

}

//##ModelId=3F90BAAB0233
void CRightVOD::OnFb() 
{
	video_channel* p = video_channel::current_sel();
	if( !vod_opened[p->index()] )
		return;
	
	VOD_SPEED vs = get_vod_speed();
	switch(vs)
	{
	case VS_FBx1:
		vs = VS_FBx2;
		break;
	case VS_FBx2:
		vs = VS_FBx3;
		break;
	case VS_FBx3:
		vs = VS_FBx4;
		break;
	case VS_FBx4:
		vs = VS_FBx1;
		break;
	default:
		vs = VS_FBx1;
		break;
	}
	CRightLogin::the_one()->SendMessage(WM_SET_VOD_SPEED, vs);
	UpdateData(true);
}

//##ModelId=3F90BAAB0247
void CRightVOD::OnFrame() 
{
	CRightLogin::the_one()->PostMessage(WM_SET_VOD_SPEED, VS_FRAME);
}

/*
 *	从video_channel传来
 */
//##ModelId=3F90BAAB016A
LRESULT CRightVOD::on_vod_opened(WPARAM w, LPARAM)
{
	int m_channel= w;
	vod_opened[m_channel] = true;
	UpdateData();
	return 0;
}

//##ModelId=3F90BAAB0188
LRESULT CRightVOD::on_vod_closed(WPARAM w, LPARAM)
{
	int window = (int) w;
	vod_opened[window] = false;
	UpdateData();

	info_balloon(IDS_VOD_END);
	return 0;
}

//##ModelId=3F90BAAB0251
void CRightVOD::OnTimer(UINT nIDEvent) 
{
	baseclass::OnTimer(nIDEvent);
}

ON_LOGGED_OUT(CRightVOD);

//##ModelId=3F90BAAA0321
VOD_SPEED CRightVOD::get_vod_speed()
{
	return (VOD_SPEED)CRightLogin::the_one()->SendMessage(WM_GET_VOD_SPEED);
}

//##ModelId=3F90BAAA032B
bool CRightVOD::paused()
{
	return get_vod_speed() == VS_PAUSE;
}

//##ModelId=3F90BAAB01A6
LRESULT CRightVOD::on_vod_set_speed(WPARAM, LPARAM)
{
	UpdateData();
	return 0;
}

void CRightVOD::Onupdatefile()
{
	UpdateData(TRUE);
	OnSelchangeDate();
}

void CRightVOD::OnSelchangeVod(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	m_date.ResetContent();
	m_files.ResetContent();
	PostMessage(WM_COMMAND,IDBTN_REFRESH,NULL);
	*pResult = 0;
}

⌨️ 快捷键说明

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