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

📄 ~rightrec.~cpp

📁 实时监控
💻 ~CPP
字号:
// RightRec.cpp : implementation file
//

#include "stdafx.h"
#include "..\dvrmanager.h"
#include "net.h"
#include "RightRec.h"
#include "../utils/common.h"
#include "../utils/custom_msgs.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CRightRec dialog


CRightRec::CRightRec(CWnd* pParent /*=NULL*/)
	: baseclass(CRightRec::IDD, pParent)
{
	//{{AFX_DATA_INIT(CRightRec)
	m_channel = -1;
	m_which = -1;
	m_date_overlay = FALSE;
	m_rec_audio = FALSE;
	m_time_overlay = FALSE;
	m_overwriting = 0;
	//}}AFX_DATA_INIT

	ZeroMemory(&opt, sizeof(opt));
	rec_opt = 0;
}


void CRightRec::DoDataExchange(CDataExchange* pDX)
{
	if( !pDX->m_bSaveAndValidate )
	{
		if( IsWindow(m_video_quality.m_hWnd) )
			m_video_quality.SetPos(m_vq);
	}
	baseclass::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CRightRec)
	DDX_Control(pDX, ID_8, m_8);
	DDX_Control(pDX, IDSL_VIDEO_QUALITY, m_video_quality);
	DDX_Control(pDX, ID_S, m_s);
	DDX_Check(pDX, ID_CK1, m_ck1);
	DDX_Check(pDX, ID_CK2, m_ck2);
	DDX_Check(pDX, ID_CK3, m_ck3);
	DDX_Check(pDX, ID_CK4, m_ck4);
	DDX_Check(pDX, ID_CK5, m_ck5);
	DDX_Check(pDX, ID_CK6, m_ck6);
	DDX_Check(pDX, ID_CK7, m_ck7);
	DDX_Check(pDX, ID_CK8, m_ck8);
	DDX_Check(pDX, ID_CK9, m_ck9);
	DDX_Control(pDX, ID_CK1, m_ck01);
	DDX_Control(pDX, ID_CK2, m_ck02);
	DDX_Control(pDX, ID_CK3, m_ck03);
	DDX_Control(pDX, ID_CK4, m_ck04);
	DDX_Control(pDX, ID_CK5, m_ck05);
	DDX_Control(pDX, ID_CK6, m_ck06);
	DDX_Control(pDX, ID_CK7, m_ck07);
	DDX_Control(pDX, ID_CK8, m_ck08);
	DDX_Control(pDX, ID_CK9, m_ck09);
	DDX_Control(pDX, IDCK_TIME_OVERLAY, m_ck_3);
	DDX_Control(pDX, IDCK_REC_AUDIO, m_ck_2);
	DDX_Control(pDX, ID_9, m_9);
	DDX_Control(pDX, ID_7, m_7);
	DDX_Control(pDX, IDC_RADIO2, m_rd2);
	DDX_Control(pDX, IDRD_OVERWRITING, m_rd1);
	DDX_Control(pDX, IDCK_DATE_OVERLAY, m_ck_1);
	DDX_Control(pDX, IDCB_WHICH, m_cbwhich);
	DDX_Control(pDX, IDCB_CHANNEL, m_cbchannel);
	DDX_Control(pDX, IDBTN_SET, m_btn_set);
	DDX_Control(pDX, IDBTN_REFRESH, m_btn_refresh);
	DDX_Control(pDX, ID_6, m_6);
	DDX_Control(pDX, ID_2, m_2);
	DDX_Control(pDX, ID_TITLE, m_title);
	DDX_Control(pDX, ID_5, m_5);
	DDX_Control(pDX, ID_3, m_3);
	DDX_Control(pDX, ID_1, m_1);
	DDX_CBIndex(pDX, IDCB_CHANNEL, m_channel);
	DDX_CBIndex(pDX, IDCB_WHICH, m_which);
	DDX_Check(pDX, IDCK_DATE_OVERLAY, m_date_overlay);
	DDX_Check(pDX, IDCK_REC_AUDIO, m_rec_audio);
	DDX_Check(pDX, IDCK_TIME_OVERLAY, m_time_overlay);
	DDX_Radio(pDX, IDRD_OVERWRITING, m_overwriting);
	//}}AFX_DATA_MAP

	if( !IsWindow(m_ck01.m_hWnd ) )
		return;

	CString alias;
	m_cbwhich.GetWindowText(alias);

	int chnls = get_chnls(alias);
	UINT ids[] = {ID_CK1,ID_CK2,ID_CK3,ID_CK4,ID_CK5,ID_CK6,ID_CK7,ID_CK8,ID_CK9};
	for( int i=0; i<9; i++ )
	{
		GetDlgItem(ids[i])->EnableWindow(i<chnls);
	}

	if( pDX->m_bSaveAndValidate )
	{
		m_vq = m_video_quality.GetPos();
	}
}


BEGIN_MESSAGE_MAP(CRightRec, baseclass)
	//{{AFX_MSG_MAP(CRightRec)
	ON_CBN_SELCHANGE(IDCB_WHICH, OnSelchangeWhich)
	ON_BN_CLICKED(IDBTN_REFRESH, OnRefresh)
	ON_BN_CLICKED(IDBTN_SET, OnSet)
	ON_CBN_SELCHANGE(IDCB_CHANNEL, OnSelchangeChannel)
	//}}AFX_MSG_MAP
	ON_MESSAGE(WM_UPDATE_DATA, on_update_data)
	MSG2(NTM_OPT_GET_OK, on_get_ok)
	MSG2(NTM_OPT_SET_OK, on_set_ok)
	MSG2(WM_LOGGED_OUT, on_logged_out)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CRightRec message handlers

BOOL CRightRec::OnInitDialog() 
{
	baseclass::OnInitDialog();
	
	init_label(m_1).SetFontBold(TRUE);
	init_label(m_3);
	init_label(m_5);
	init_label(m_7);
	init_label(m_9);
	
	init_title(m_title);
	
	m_video_quality.SetRange(0, 3);
	m_video_quality.SetTic(4);
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

LRESULT CRightRec::on_update_data(WPARAM w, LPARAM l)
{
	if( w == FALSE )
	{
		if( l == 0 )
		{
			m_channel = opt.channel;
			m_date_overlay = opt.dateoverlay;
			m_time_overlay = opt.timeoverlay;
			m_vq = opt.videoquality-1;
			m_rec_audio = opt.recaudio;
			m_overwriting = opt.overwrite;
		}
		if( l == 1 )
		{
			BOOL* cks[] = {&m_ck1,&m_ck2,&m_ck3,&m_ck4,
							&m_ck5,&m_ck6,&m_ck7,&m_ck8,
							&m_ck9};
			for( int i=0; i<9; i++ )
			{
				DWORD p2 = 1<<i;
				if( rec_opt & p2 )
					*cks[i] = TRUE;
				else
					*cks[i] = FALSE;
			}
		}
	}
	UpdateData(w);
	return 0;
}

void CRightRec::on_join()
{
	if( m_cbwhich.GetCount() == 0 )
	{
		fill_combo(&m_cbwhich);
		m_cbchannel.EnableWindow(FALSE);
	}
}

void CRightRec::on_leave()
{
	//m_cbchannel.ResetContent();
}

CString CRightRec::get_alias()
{
	CString alias;

	UpdateData();
	if( m_which == -1 )
		return CString();

	m_cbwhich.GetLBText(m_which, alias);
	return alias;
}

void CRightRec::OnSelchangeWhich() 
{
	CString alias = get_alias();
	m_cbchannel.EnableWindow(!alias.IsEmpty());
	
	if( alias.IsEmpty() )
		return;

	fill_combo_chnls(alias, &m_cbchannel);
	m_channel = 0;
	UpdateData(FALSE);

	OnRefresh();
}

//void CRightRec::on_get_ok(DWORD ip, USHORT port, NET_OPTIONS no, void* stuff)
MSG3(on_get_ok, CRightRec)
{
	NET_OPTIONS no = (NET_OPTIONS)w;
	void* stuff = (void*)l;
	if( no == OPT_REC )
	{
		memcpy(&opt, stuff, sizeof(opt));
		PostMessage(WM_UPDATE_DATA, FALSE, 0);
	}
	if( no == OPT_REC_ENABLE )
	{
		rec_opt = *(SHORT*)stuff;
		PostMessage(WM_UPDATE_DATA, FALSE, 1);
	}
	info_balloon(IDS_REC_GET);
	return 0;
}

//void CRightRec::on_set_ok(DWORD ip, USHORT port, NET_OPTIONS no)
MSG3(on_set_ok, CRightRec)
{
	info_balloon(IDS_REC_SET);
	return 0;
}

void CRightRec::OnRefresh() 
{
	GET_ALIAS;

	get_net_opt(alias, OPT_REC, m_channel, m_hWnd);
	Sleep(10);
	get_net_opt(alias, OPT_REC_ENABLE, 0, m_hWnd);
}

void CRightRec::OnSet() 
{
	GET_ALIAS;

	opt.channel = m_channel;
	opt.overwrite = m_overwriting;
	opt.dateoverlay = m_date_overlay;
	opt.timeoverlay = m_time_overlay;
	opt.videoquality = m_vq + 1;
	opt.recaudio = m_rec_audio;

	set_net_opt(alias, OPT_REC, &opt, m_hWnd);

	rec_opt = 0;
	BOOL* cks[] = {&m_ck1,&m_ck2,&m_ck3,&m_ck4,
		&m_ck5,&m_ck6,&m_ck7,&m_ck8,
		&m_ck9};
	for( int i=0; i<9; i++ )
	{
		DWORD p2 = 1<<i;
		if( *cks[i] )
			rec_opt |= p2;
	}
	set_net_opt(alias, OPT_REC_ENABLE, &rec_opt, m_hWnd);
}

void CRightRec::OnSelchangeChannel() 
{
	UpdateData();
	OnRefresh();
}

ON_LOGGED_OUT(CRightRec);

⌨️ 快捷键说明

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