// VideoLost.cpp : implementation file // #include "stdafx.h" #include "newclient.h" #include "VideoLost.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif extern LPNET_DVR_VILOST lpVILost; ///////////////////////////////////////////////////////////////////////////// // CVideoLost dialog CVideoLost::CVideoLost(CWnd* pParent /*=NULL*/) : CDialog(CVideoLost::IDD, pParent) { //{{AFX_DATA_INIT(CVideoLost) m_bHandleType1 = FALSE; m_bHandleType2 = FALSE; m_bHandleType3 = FALSE; m_bHandleType4 = FALSE; m_bAlarmOut1 = FALSE; m_bAlarmOut2 = FALSE; m_bAlarmOut3 = FALSE; m_bAlarmOut4 = FALSE; m_iHour11 = 0; m_iHour12 = 0; m_iHour21 = 0; m_iHour22 = 0; m_iHour31 = 0; m_iHour32 = 0; m_iHour41 = 0; m_iHour42 = 0; m_iMin11 = 0; m_iMin12 = 0; m_iMin21 = 0; m_iMin22 = 0; m_iMin31 = 0; m_iMin32 = 0; m_iMin41 = 0; m_iMin42 = 0; //}}AFX_DATA_INIT } void CVideoLost::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CVideoLost) DDX_Control(pDX, IDC_COMBOWEEKDAY, m_WeekDayCtrl); DDX_Control(pDX, IDC_COMBOCOPYTIME, m_CopyTimeCtrl); DDX_Check(pDX, IDC_CHECKHANDLETYPE1, m_bHandleType1); DDX_Check(pDX, IDC_CHECKHANDLETYPE2, m_bHandleType2); DDX_Check(pDX, IDC_CHECKHANDLETYPE3, m_bHandleType3); DDX_Check(pDX, IDC_CHECKHANDLETYPE4, m_bHandleType4); DDX_Check(pDX, IDC_CHKALARMOUT1, m_bAlarmOut1); DDX_Check(pDX, IDC_CHKALARMOUT2, m_bAlarmOut2); DDX_Check(pDX, IDC_CHKALARMOUT3, m_bAlarmOut3); DDX_Check(pDX, IDC_CHKALARMOUT4, m_bAlarmOut4); DDX_Text(pDX, IDC_EDITHOUR11, m_iHour11); DDX_Text(pDX, IDC_EDITHOUR12, m_iHour12); DDX_Text(pDX, IDC_EDITHOUR21, m_iHour21); DDX_Text(pDX, IDC_EDITHOUR22, m_iHour22); DDX_Text(pDX, IDC_EDITHOUR31, m_iHour31); DDX_Text(pDX, IDC_EDITHOUR32, m_iHour32); DDX_Text(pDX, IDC_EDITHOUR41, m_iHour41); DDX_Text(pDX, IDC_EDITHOUR42, m_iHour42); DDX_Text(pDX, IDC_EDITMIN11, m_iMin11); DDX_Text(pDX, IDC_EDITMIN12, m_iMin12); DDX_Text(pDX, IDC_EDITMIN21, m_iMin21); DDX_Text(pDX, IDC_EDITMIN22, m_iMin22); DDX_Text(pDX, IDC_EDITMIN31, m_iMin31); DDX_Text(pDX, IDC_EDITMIN32, m_iMin32); DDX_Text(pDX, IDC_EDITMIN41, m_iMin41); DDX_Text(pDX, IDC_EDITMIN42, m_iMin42); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CVideoLost, CDialog) //{{AFX_MSG_MAP(CVideoLost) ON_BN_CLICKED(IDC_VILOSTTIMEOK, OnVilosttimeok) ON_BN_CLICKED(IDC_VILOSTTIMECOPY, OnVilosttimecopy) ON_CBN_SELCHANGE(IDC_COMBOWEEKDAY, OnSelchangeComboweekday) ON_BN_CLICKED(IDC_CHECKHANDLETYPE4, OnCheckhandletype4) ON_BN_CLICKED(IDC_VILOSTOK, OnVilostok) ON_BN_CLICKED(IDC_VILOSTEXIT, OnVilostexit) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CVideoLost message handlers BOOL CVideoLost::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here m_bHandleType1 = lpVILost->strVILostHandleType.dwHandleType &0x01; m_bHandleType2 = (lpVILost->strVILostHandleType.dwHandleType>>1)&0x01; m_bHandleType3 = (lpVILost->strVILostHandleType.dwHandleType>>2)&0x01; m_bHandleType4 = (lpVILost->strVILostHandleType.dwHandleType>>3)&0x01; EnableControl(m_bHandleType4); m_WeekDayCtrl.SetCurSel(0); m_CopyTimeCtrl.SetCurSel(0); m_iHour11 = lpVILost->struAlarmTime[0][0].byStartHour; m_iMin11 = lpVILost->struAlarmTime[0][0].byStartMin; m_iHour12 = lpVILost->struAlarmTime[0][0].byStopHour; m_iMin12 = lpVILost->struAlarmTime[0][0].byStopMin; m_iHour21 = lpVILost->struAlarmTime[0][1].byStartHour; m_iMin21 = lpVILost->struAlarmTime[0][1].byStartMin; m_iHour22 = lpVILost->struAlarmTime[0][1].byStopHour; m_iMin22 = lpVILost->struAlarmTime[0][1].byStopMin; m_iHour31 = lpVILost->struAlarmTime[0][2].byStartHour; m_iMin31 = lpVILost->struAlarmTime[0][2].byStartMin; m_iHour32 = lpVILost->struAlarmTime[0][2].byStopHour; m_iMin32 = lpVILost->struAlarmTime[0][2].byStopMin; m_iHour41 = lpVILost->struAlarmTime[0][3].byStartHour; m_iMin41 = lpVILost->struAlarmTime[0][3].byStartMin; m_iHour42 = lpVILost->struAlarmTime[0][3].byStopHour; m_iMin42 = lpVILost->struAlarmTime[0][3].byStopMin; UpdateData(FALSE); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CVideoLost::OnOK() { // TODO: Add extra validation here //CDialog::OnOK(); } void CVideoLost::OnCancel() { // TODO: Add extra cleanup here //CDialog::OnCancel(); } void CVideoLost::OnVilosttimeok() { // TODO: Add your control notification handler code here UpdateData(TRUE); if(!F_TimeTest()) return; int i = m_WeekDayCtrl.GetCurSel(); lpVILost->struAlarmTime[i][0].byStartHour = m_iHour11; lpVILost->struAlarmTime[i][0].byStartMin = m_iMin11; lpVILost->struAlarmTime[i][0].byStopHour = m_iHour12; lpVILost->struAlarmTime[i][0].byStopMin = m_iMin12; lpVILost->struAlarmTime[i][1].byStartHour = m_iHour21; lpVILost->struAlarmTime[i][1].byStartMin = m_iMin21; lpVILost->struAlarmTime[i][1].byStopHour = m_iHour22; lpVILost->struAlarmTime[i][1].byStopMin = m_iMin22; lpVILost->struAlarmTime[i][2].byStartHour = m_iHour31; lpVILost->struAlarmTime[i][2].byStartMin = m_iMin31; lpVILost->struAlarmTime[i][2].byStopHour = m_iHour32; lpVILost->struAlarmTime[i][2].byStopMin = m_iMin32; lpVILost->struAlarmTime[i][3].byStartHour = m_iHour41; lpVILost->struAlarmTime[i][3].byStartMin = m_iMin41; lpVILost->struAlarmTime[i][3].byStopHour = m_iHour42; lpVILost->struAlarmTime[i][3].byStopMin = m_iMin42; GetDlgItem(IDC_VILOSTTIMECOPY)->EnableWindow(TRUE); } void CVideoLost::OnVilosttimecopy() { // TODO: Add your control notification handler code here UpdateData(TRUE); int j,k; int i = m_WeekDayCtrl.GetCurSel(); int m_nCopyTime = m_CopyTimeCtrl.GetCurSel() - 1; if(m_nCopyTime == -1) { for(j=0; jstruAlarmTime[j][k]), &(lpVILost->struAlarmTime[i][k]), sizeof(NET_DVR_SCHEDTIME)); } } } else { for(k=0; kstruAlarmTime[m_nCopyTime][k]), &(lpVILost->struAlarmTime[i][k]), sizeof(NET_DVR_SCHEDTIME)); } } } void CVideoLost::OnSelchangeComboweekday() { // TODO: Add your control notification handler code here UpdateData(TRUE); int i = m_WeekDayCtrl.GetCurSel(); m_iHour11 = lpVILost->struAlarmTime[i][0].byStartHour; m_iMin11 = lpVILost->struAlarmTime[i][0].byStartMin; m_iHour12 = lpVILost->struAlarmTime[i][0].byStopHour; m_iMin12 = lpVILost->struAlarmTime[i][0].byStopMin; m_iHour21 = lpVILost->struAlarmTime[i][1].byStartHour; m_iMin21 = lpVILost->struAlarmTime[i][1].byStartMin; m_iHour22 = lpVILost->struAlarmTime[i][1].byStopHour; m_iMin22 = lpVILost->struAlarmTime[i][1].byStopMin; m_iHour31 = lpVILost->struAlarmTime[i][2].byStartHour; m_iMin31 = lpVILost->struAlarmTime[i][2].byStartMin; m_iHour32 = lpVILost->struAlarmTime[i][2].byStopHour; m_iMin32 = lpVILost->struAlarmTime[i][2].byStopMin; m_iHour41 = lpVILost->struAlarmTime[i][3].byStartHour; m_iMin41 = lpVILost->struAlarmTime[i][3].byStartMin; m_iHour42 = lpVILost->struAlarmTime[i][3].byStopHour; m_iMin42 = lpVILost->struAlarmTime[i][3].byStopMin; UpdateData(FALSE); } void CVideoLost::OnCheckhandletype4() { // TODO: Add your control notification handler code here UpdateData(TRUE); EnableControl(m_bHandleType4); } void CVideoLost::OnVilostok() { // TODO: Add your control notification handler code here UpdateData(TRUE); if(!F_TimeTest()) return; int i = m_WeekDayCtrl.GetCurSel(); lpVILost->struAlarmTime[i][0].byStartHour = m_iHour11; lpVILost->struAlarmTime[i][0].byStartMin = m_iMin11; lpVILost->struAlarmTime[i][0].byStopHour = m_iHour12; lpVILost->struAlarmTime[i][0].byStopMin = m_iMin12; lpVILost->struAlarmTime[i][1].byStartHour = m_iHour21; lpVILost->struAlarmTime[i][1].byStartMin = m_iMin21; lpVILost->struAlarmTime[i][1].byStopHour = m_iHour22; lpVILost->struAlarmTime[i][1].byStopMin = m_iMin22; lpVILost->struAlarmTime[i][2].byStartHour = m_iHour31; lpVILost->struAlarmTime[i][2].byStartMin = m_iMin31; lpVILost->struAlarmTime[i][2].byStopHour = m_iHour32; lpVILost->struAlarmTime[i][2].byStopMin = m_iMin32; lpVILost->struAlarmTime[i][3].byStartHour = m_iHour41; lpVILost->struAlarmTime[i][3].byStartMin = m_iMin41; lpVILost->struAlarmTime[i][3].byStopHour = m_iHour42; lpVILost->struAlarmTime[i][3].byStopMin = m_iMin42; lpVILost->strVILostHandleType.dwHandleType = 0; lpVILost->strVILostHandleType.dwHandleType |= (m_bHandleType1 << 0); lpVILost->strVILostHandleType.dwHandleType |= (m_bHandleType2 << 1); lpVILost->strVILostHandleType.dwHandleType |= (m_bHandleType3 << 2); lpVILost->strVILostHandleType.dwHandleType |= (m_bHandleType4 << 3); lpVILost->strVILostHandleType.byRelAlarmOut[0] = m_bAlarmOut1; lpVILost->strVILostHandleType.byRelAlarmOut[1] = m_bAlarmOut2; lpVILost->strVILostHandleType.byRelAlarmOut[2] = m_bAlarmOut3; lpVILost->strVILostHandleType.byRelAlarmOut[3] = m_bAlarmOut4; CDialog::OnOK(); } void CVideoLost::OnVilostexit() { // TODO: Add your control notification handler code here CDialog::OnCancel(); } void CVideoLost::EnableControl(BOOL bEnable) { if(m_dwAlarmOutNum >= 1) { GetDlgItem(IDC_CHKALARMOUT1)->EnableWindow(bEnable); m_bAlarmOut1 = lpVILost->strVILostHandleType.byRelAlarmOut[0]; } if(m_dwAlarmOutNum >= 2) { GetDlgItem(IDC_CHKALARMOUT2)->EnableWindow(bEnable); m_bAlarmOut2 = lpVILost->strVILostHandleType.byRelAlarmOut[1]; } if(m_dwAlarmOutNum >= 3) { GetDlgItem(IDC_CHKALARMOUT3)->EnableWindow(bEnable); m_bAlarmOut3 = lpVILost->strVILostHandleType.byRelAlarmOut[2]; } if(m_dwAlarmOutNum >= 4) { GetDlgItem(IDC_CHKALARMOUT4)->EnableWindow(bEnable); m_bAlarmOut4 = lpVILost->strVILostHandleType.byRelAlarmOut[3]; } } BOOL CVideoLost::F_TimeTest() { int i, j; WORD wStartTime[4], wStopTime[4]; UpdateData(TRUE); if( (m_iHour11 < 0) || (m_iHour11 > 24) || (m_iHour12 < 0) || (m_iHour12 > 24) || \ (m_iHour21 < 0) || (m_iHour21 > 24) || (m_iHour22 < 0) || (m_iHour22 > 24) || \ (m_iHour31 < 0) || (m_iHour31 > 24) || (m_iHour32 < 0) || (m_iHour32 > 24) || \ (m_iHour41 < 0) || (m_iHour41 > 24) || (m_iHour42 < 0) || (m_iHour42 > 24) ) { AfxMessageBox("小时的范围在0 -- 24之间!"); return FALSE; } if( (m_iMin11 < 0) || (m_iMin11 > 60) || (m_iMin12 < 0) || (m_iMin12 > 60) || \ (m_iMin21 < 0) || (m_iMin21 > 60) || (m_iMin22 < 0) || (m_iMin22 > 60) || \ (m_iMin31 < 0) || (m_iMin31 > 60) || (m_iMin32 < 0) || (m_iMin32 > 60) || \ (m_iMin41 < 0) || (m_iMin41 > 60) || (m_iMin42 < 0) || (m_iMin42 > 60) ) { AfxMessageBox("分钟的范围在0 -- 60之间!"); return FALSE; } wStartTime[0] = m_iHour11 * 100 + m_iMin11; wStartTime[1] = m_iHour21 * 100 + m_iMin21; wStartTime[2] = m_iHour31 * 100 + m_iMin31; wStartTime[3] = m_iHour41 * 100 + m_iMin41; wStopTime[0] = m_iHour12 * 100 + m_iMin12; wStopTime[1] = m_iHour22 * 100 + m_iMin22; wStopTime[2] = m_iHour32 * 100 + m_iMin32; wStopTime[3] = m_iHour42 * 100 + m_iMin42; for(i = 0; i < 4; i++) { if( (wStartTime[i] > 2400) || (wStopTime[i] > 2400) ) { AfxMessageBox("布防时间不能超过24:00!"); return FALSE; } if(wStartTime[i] > wStopTime[i]) { AfxMessageBox("布防起始时间不能大于停止时间!"); return FALSE; } for(j = 0; j < 4; j++) { if (i == j) continue; if( (wStartTime[i] > wStartTime[j]) && (wStartTime[i] < wStopTime[j]) || \ (wStopTime[i] > wStartTime[j]) && (wStopTime[i] < wStopTime[j]) ) { AfxMessageBox("布防时间段不能重复!"); return FALSE; } } } return TRUE; }