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

📄 rightalarm.cpp

📁 实时监控
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// RightAlarm.cpp : implementation file
//

#include "stdafx.h"
#include "..\dvrmanager.h"
#include "net.h"
#include "RightAlarm.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

/////////////////////////////////////////////////////////////////////////////
// CRightAlarm dialog
#define REC_MAX 99
#define REC_MIN	1

#define WRITE_BIT(x) \
	if( m_ck##x )\
		opt.recchannel |= 1<<(x-1);

#define READ_BIT(x) \
	m_ck##x = get_bit(opt.recchannel, (x-1));

//##ModelId=3F90BAB60288
CRightAlarm::CRightAlarm(CWnd* pParent /*=NULL*/)
	: baseclass(CRightAlarm::IDD, pParent)
{
	//{{AFX_DATA_INIT(CRightAlarm)
	m_input = -1;
	m_rec_day = 0;
	m_which = -1;
	m_enable = FALSE;
	m_out1 = FALSE;
	m_out2 = FALSE;
	m_out3 = FALSE;
	m_out4 = FALSE;
	m_rec_sched = FALSE;
	m_date00 = 0;
	m_date01 = 0;
	m_date10 = 0;
	m_date11 = 0;
	m_rec_duration = 1;
	m_ck1 = FALSE;
	m_ck2 = FALSE;
	m_ck3 = FALSE;
	m_ck4 = FALSE;
	m_ck5 = FALSE;
	m_ck6 = FALSE;
	m_ck7 = FALSE;
	m_ck8 = FALSE;
	m_ck9 = FALSE;
	m_ck10 = FALSE;
	m_ck11 = FALSE;
	m_ck12 = FALSE;
	m_ck13 = FALSE;
	m_ck14 = FALSE;
	m_ck15 = FALSE;
	m_ck16 = FALSE;
	//}}AFX_DATA_INIT

	//ZeroMemory(&m_ck1, chnl_cnt*sizeof(BOOL));
}


//##ModelId=3F90BAB70334
void CRightAlarm::DoDataExchange(CDataExchange* pDX)
{
/*
	if( 1 ) //!pDX->m_bSaveAndValidate )
	{
		if( m_rec_duration < REC_MIN )
		{
			m_rec_duration = REC_MIN;
		}
		if( m_rec_duration > REC_MAX )
		{
			m_rec_duration = REC_MAX;
		}
	}
*/
	baseclass::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CRightAlarm)
	DDX_Control(pDX, IDCB_REC_DAY, m_cbweek);
	DDX_Control(pDX, ID_S, m_s);
	DDX_Control(pDX, IDCK_REC_SCHEDULE, m_ck_sched);
	DDX_Control(pDX, IDCK_OUT3, m_ckout3);
	DDX_Control(pDX, IDCK_OUT4, m_ckout4);
	DDX_Control(pDX, IDCK_OUT2, m_ckout2);
	DDX_Control(pDX, IDCK_OUT1, m_ckout1);
	DDX_Control(pDX, IDCK_ENABLE, m_ckenable);
	DDX_Control(pDX, IDCB_WHICH, m_cbwhich);
	DDX_Control(pDX, IDCB_INPUT, m_cbinput);
	DDX_Control(pDX, IDBTN_SET, m_btn_set);
	DDX_Control(pDX, IDBTN_REFRESH, m_btn_refresh);
	DDX_Control(pDX, ID_TITLE, m_title);
	DDX_Control(pDX, ID_6, m_6);
	DDX_Control(pDX, ID_2, m_2);
	DDX_Control(pDX, ID_12, m_12);
	DDX_Control(pDX, ID_11, m_11);
	DDX_Control(pDX, ID_10, m_10);
	DDX_Control(pDX, ID_9, m_9);
	DDX_Control(pDX, ID_8, m_8);
	DDX_Control(pDX, ID_7, m_7);
	DDX_Control(pDX, ID_5, m_5);
	DDX_Control(pDX, ID_4, m_4);
	DDX_Control(pDX, ID_3, m_3);
	DDX_Control(pDX, ID_1, m_1);
	DDX_CBIndex(pDX, IDCB_INPUT, m_input);
	DDX_CBIndex(pDX, IDCB_REC_DAY, m_rec_day);
	DDX_CBIndex(pDX, IDCB_WHICH, m_which);
	DDX_Check(pDX, IDCK_ENABLE, m_enable);
	DDX_Check(pDX, IDCK_OUT1, m_out1);
	DDX_Check(pDX, IDCK_OUT2, m_out2);
	DDX_Check(pDX, IDCK_OUT3, m_out3);
	DDX_Check(pDX, IDCK_OUT4, m_out4);

	DDX_Check(pDX, IDCK_REC_SCHEDULE, m_rec_sched);
	DDX_DateTimeCtrl(pDX, IDDATE_00, m_date00);
	DDX_DateTimeCtrl(pDX, IDDATE_01, m_date01);
	DDX_DateTimeCtrl(pDX, IDDATE_10, m_date10);
	DDX_DateTimeCtrl(pDX, IDDATE_11, m_date11);
	DDX_Text(pDX, IDED_REC_DURATION, m_rec_duration);
	DDV_MinMaxInt(pDX, m_rec_duration, 1, 99);
	DDX_Check(pDX, IDCK_CHNL1, m_ck1);
	DDX_Check(pDX, IDCK_CHNL2, m_ck2);
	DDX_Check(pDX, IDCK_CHNL3, m_ck3);
	DDX_Check(pDX, IDCK_CHNL4, m_ck4);
	DDX_Check(pDX, IDCK_CHNL5, m_ck5);
	DDX_Check(pDX, IDCK_CHNL6, m_ck6);
	DDX_Check(pDX, IDCK_CHNL7, m_ck7);
	DDX_Check(pDX, IDCK_CHNL8, m_ck8);
	DDX_Check(pDX, IDCK_CHNL9, m_ck9);
	DDX_Check(pDX, IDCK_CHNL10, m_ck10);
	DDX_Check(pDX, IDCK_CHNL11, m_ck11);
	DDX_Check(pDX, IDCK_CHNL12, m_ck12);
	DDX_Check(pDX, IDCK_CHNL13, m_ck13);
	DDX_Check(pDX, IDCK_CHNL14, m_ck14);
	DDX_Check(pDX, IDCK_CHNL15, m_ck15);
	DDX_Check(pDX, IDCK_CHNL16, m_ck16);

	DDX_Control(pDX, IDCK_CHNL1, m_c1);
	DDX_Control(pDX, IDCK_CHNL2, m_c2);
	DDX_Control(pDX, IDCK_CHNL3, m_c3);
	DDX_Control(pDX, IDCK_CHNL4, m_c4);
	DDX_Control(pDX, IDCK_CHNL5, m_c5);
	DDX_Control(pDX, IDCK_CHNL6, m_c6);
	DDX_Control(pDX, IDCK_CHNL7, m_c7);
	DDX_Control(pDX, IDCK_CHNL8, m_c8);
	DDX_Control(pDX, IDCK_CHNL9, m_c9);
	DDX_Control(pDX, IDCK_CHNL10, m_c10);
	DDX_Control(pDX, IDCK_CHNL11, m_c11);
	DDX_Control(pDX, IDCK_CHNL12, m_c12);
	DDX_Control(pDX, IDCK_CHNL13, m_c13);
	DDX_Control(pDX, IDCK_CHNL14, m_c14);
	DDX_Control(pDX, IDCK_CHNL15, m_c15);
	DDX_Control(pDX, IDCK_CHNL16, m_c16);
	//}}AFX_DATA_MAP

	/*
	 *	当允许/禁止MD时, 更新控件状态
	 */
	static UINT ids[] = 
	{
		IDED_REC_DURATION, ID_SPIN, 
		IDCK_OUT1, IDCK_OUT2,
		IDCK_OUT3, IDCK_OUT4,
		IDCK_REC_SCHEDULE
	};
	for( int i=0; i<SIZE_OF(ids); i++ )
	{
		GetDlgItem(ids[i])->EnableWindow(m_enable);
	}

	bool m_bool;
	if(m_which == -1) m_bool = false;
	else m_bool = true;
	GetDlgItem(IDDATE_00)->EnableWindow(m_rec_sched && m_enable && m_bool);
	GetDlgItem(IDDATE_01)->EnableWindow(m_rec_sched && m_enable && m_bool);
	GetDlgItem(IDDATE_10)->EnableWindow(m_rec_sched && m_enable && m_bool);
	GetDlgItem(IDDATE_11)->EnableWindow(m_rec_sched && m_enable && m_bool);

	static UINT ids1[] = {IDCK_CHNL1,IDCK_CHNL2,IDCK_CHNL3,IDCK_CHNL4,
						IDCK_CHNL5,IDCK_CHNL6,IDCK_CHNL7,IDCK_CHNL8,
						IDCK_CHNL9,IDCK_CHNL10,IDCK_CHNL11,IDCK_CHNL12,
						IDCK_CHNL13,IDCK_CHNL14,IDCK_CHNL15,IDCK_CHNL16};
	
	CString alias;
	m_cbwhich.GetWindowText(alias);
	int chnl = get_chnls(alias);
	for( i=0; i<16; i++ )
	{
		GetDlgItem(ids1[i])->EnableWindow(m_enable && (i<chnl) );
	}
	ULONG ip;
	USHORT port;
	get_addr(alias, ip, port);
	GetDlgItem(IDCK_OUT2)->EnableWindow(!(check_2000_version(ip, port)|| check_2100_version(ip, port)) && m_enable && m_bool);
	GetDlgItem(IDCK_OUT3)->EnableWindow((check_16_version(ip, port)|| check_4008_version(ip, port)) && m_enable && m_bool);
	GetDlgItem(IDCK_OUT4)->EnableWindow((check_16_version(ip, port)|| check_4008_version(ip, port)) && m_enable && m_bool);	
}


BEGIN_MESSAGE_MAP(CRightAlarm, baseclass)
	//{{AFX_MSG_MAP(CRightAlarm)
	ON_BN_CLICKED(IDBTN_REFRESH, OnRefresh)
	ON_CBN_SELCHANGE(IDCB_WHICH, OnSelchangeWhich)
	ON_CBN_SELCHANGE(IDCB_INPUT, OnSelchangeInput)
	ON_NOTIFY(DTN_DATETIMECHANGE, IDDATE_00, OnDatetimechange00)
	ON_NOTIFY(DTN_DATETIMECHANGE, IDDATE_01, OnDatetimechange01)
	ON_NOTIFY(DTN_DATETIMECHANGE, IDDATE_10, OnDatetimechange10)
	ON_NOTIFY(DTN_DATETIMECHANGE, IDDATE_11, OnDatetimechange11)
	ON_BN_CLICKED(IDCK_ENABLE, OnEnable)
	ON_BN_CLICKED(IDCK_REC_SCHEDULE, OnRecSchedule)
	ON_CBN_SELCHANGE(IDCB_REC_DAY, OnSelchangeRecDay)
	ON_BN_CLICKED(IDBTN_SET, OnSet)
	ON_NOTIFY(UDN_DELTAPOS, ID_SPIN, OnDeltaposSpin)
	ON_EN_CHANGE(IDED_REC_DURATION, OnChangeRecDuration)
	ON_BN_CLICKED(IDCK_OUT1, OnOut1)
	ON_BN_CLICKED(IDCK_OUT2, OnOut2)
	//}}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()

/////////////////////////////////////////////////////////////////////////////
// CRightAlarm message handlers

//##ModelId=3F90BAB7037A
BOOL CRightAlarm::OnInitDialog() 
{
	baseclass::OnInitDialog();
	
	init_label(m_1).SetFontBold(TRUE);
	init_label(m_3);
	init_label(m_4);
	init_label(m_5);
	init_label(m_7);
	init_label(m_8);
	init_label(m_9);
	init_label(m_10);
	init_label(m_11);
	init_label(m_12);
	
	init_title(m_title);
	
	fill_combo_week(&m_cbweek);
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

//##ModelId=3F90BAB60231
void CRightAlarm::on_join()
{
	m_cbwhich.ResetContent();
	fill_combo(&m_cbwhich);
}

//##ModelId=3F90BAB60242
void CRightAlarm::on_leave()
{
	//m_cbwhich.ResetContent();
	//m_cbinput.ResetContent();
}

//void CRightAlarm::on_get_ok(DWORD ip, USHORT port, NET_OPTIONS no, void* stuff)
MSG3(on_get_ok, CRightAlarm)
{
	NET_OPTIONS no = (NET_OPTIONS)w;
	void* stuff = (void*)l;

	memcpy(&opt, stuff, sizeof(opt));

	PostMessage(WM_UPDATE_DATA, FALSE);

	info_balloon(IDS_ALARM_GET);
	return 0;
}

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

byte get_bit(DWORD x, int bit)
{
	DWORD pow2 = 1<<bit;
	return 0 != (x & pow2);
}

//##ModelId=3F90BAB70352
LRESULT CRightAlarm::on_update_data(WPARAM w, LPARAM)
{
	if( w == FALSE )
	{
		TREC_ALARMRECPARA* a = (TREC_ALARMRECPARA*)&opt;
		m_enable = a->onoff;
		m_input = a->alarmin;

		//for( int i=0; i<chnl_cnt; i++ )
		//{
		//	*ck[i] = get_bit(opt.recchannel, i);
		//}
		READ_BIT(1); READ_BIT(2); READ_BIT(3); READ_BIT(4);
		READ_BIT(5); READ_BIT(6); READ_BIT(7); READ_BIT(8);
		READ_BIT(9); READ_BIT(10); READ_BIT(11); READ_BIT(12);
		READ_BIT(13); READ_BIT(14); READ_BIT(15); READ_BIT(16);

		m_out1 = get_bit(a->alarmout, 0);
		m_out2 = get_bit(a->alarmout, 1);
		m_out3 = get_bit(a->alarmout, 2);
		m_out4 = get_bit(a->alarmout, 3);

		m_rec_duration = a->rectime;
		m_rec_sched = IS_DAY_SET(opt, m_rec_day);
		if( m_rec_sched )
			put_date();
		else
		{
			for(int i=0; i<7; i++)
			{
				if(IS_DAY_SET(opt, i))
				{

⌨️ 快捷键说明

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