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

📄 remotechannelconfig.cpp

📁 监控开发资料,提供二次开发源码和使用说明书
💻 CPP
📖 第 1 页 / 共 2 页
字号:
			m_piccfg[m_nCopyChanNum].strHideAlarm.dwEnableHideAlarm = m_bHideAlarm;
		}
		m_piccfg[m_nCopyChanNum].dwShowChanName = m_bChanname;
		m_piccfg[m_nCopyChanNum].wShowNameTopLeftX = m_channame_x;
		m_piccfg[m_nCopyChanNum].wShowNameTopLeftY = m_channame_y;
		m_piccfg[m_nCopyChanNum].dwShowOsd = m_bOsd;
		m_piccfg[m_nCopyChanNum].wOSDTopLeftX = m_osd_x;
		m_piccfg[m_nCopyChanNum].wOSDTopLeftY = m_osd_y;
		m_piccfg[m_nCopyChanNum].byDispWeek = m_bDispWeek;
		m_piccfg[m_nCopyChanNum].byOSDAttrib = m_OsdAttrib.GetCurSel()+1;
		m_piccfg[m_nCopyChanNum].byOSDType = m_OsdType.GetCurSel();
		m_piccfg[m_nCopyChanNum].dwShowLogo = m_bLogo;
		m_piccfg[m_nCopyChanNum].wLOGOTopLeftX = m_logo_x;
		m_piccfg[m_nCopyChanNum].wLOGOTopLeftY = m_logo_y;
		m_piccfg[m_nCopyChanNum].byLogoAttrib = m_LogoAttrib.GetCurSel()+1;
		//复制视频参数
		m_piccfg[m_nCopyChanNum].byBrightness = m_piccfg[m_nChanSel].byBrightness;
		m_piccfg[m_nCopyChanNum].byContrast = m_piccfg[m_nChanSel].byContrast;
		m_piccfg[m_nCopyChanNum].byHue = m_piccfg[m_nChanSel].byHue;
		m_piccfg[m_nCopyChanNum].bySaturation = m_piccfg[m_nChanSel].bySaturation;
		bSetChannelPara[m_nCopyChanNum] = TRUE;
	}
}

void CRemoteChannelConfig::OnButmotion() 
{
	// TODO: Add your control notification handler code here
	CRemoteDetectConfig DetectCfgDlg;
	
	lpMotionDetect = &(m_piccfg[m_nChanSel].struMotion);
	DetectCfgDlg.m_iChannel = m_nChanNum;
	DetectCfgDlg.m_lServerID = m_lServerID;
	DetectCfgDlg.m_dwAlarmOutNum = m_dwAlarmOutNum;
	DetectCfgDlg.m_iChannelnumber = m_iChannelnumber;
	if(DetectCfgDlg.DoModal() == IDOK)
		bSetChannelPara[m_nChanSel] = TRUE;
}

void CRemoteChannelConfig::OnButrecord() 
{
	// TODO: Add your control notification handler code here
	CRemoteRecordPlanConfig dlg;

	dlg.serverrecordplan = &(m_record[m_nChanSel]);
	if(dlg.DoModal() == IDOK)
		bSetChannelPara[m_nChanSel] = TRUE;
}

void CRemoteChannelConfig::OnChkrecord() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	if(m_bRecord)
		GetDlgItem(IDC_BUTRECORD)->EnableWindow(TRUE);
	else
		GetDlgItem(IDC_BUTRECORD)->EnableWindow(FALSE);
}


void CRemoteChannelConfig::OnButhide() 
{
	// TODO: Add your control notification handler code here
	CRemoteHideConfig Dlg;
	
	Dlg.m_wHideX = m_piccfg[m_nChanSel].wHideAreaTopLeftX;
	Dlg.m_wHideY = m_piccfg[m_nChanSel].wHideAreaTopLeftY;
	Dlg.m_wHideWidth = m_piccfg[m_nChanSel].wHideAreaWidth;
	Dlg.m_wHideHeight = m_piccfg[m_nChanSel].wHideAreaHeight;
	Dlg.m_iChannel = m_nChanNum;
	Dlg.m_lServerID = m_lServerID;
	if(Dlg.DoModal() == IDOK)
	{
		m_piccfg[m_nChanSel].wHideAreaTopLeftX = Dlg.m_wHideX;
		m_piccfg[m_nChanSel].wHideAreaTopLeftY = Dlg.m_wHideY;
		m_piccfg[m_nChanSel].wHideAreaWidth = Dlg.m_wHideWidth;
		m_piccfg[m_nChanSel].wHideAreaHeight = Dlg.m_wHideHeight;
		bSetChannelPara[m_nChanSel] = TRUE;
	}
}

void CRemoteChannelConfig::OnChkhidearea() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	if(m_bHide)
		GetDlgItem(IDC_BUTHIDE)->EnableWindow(TRUE);
	else
		GetDlgItem(IDC_BUTHIDE)->EnableWindow(FALSE);
}

void CRemoteChannelConfig::OnChkosd() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	EnableOsd(m_bOsd);
}

void CRemoteChannelConfig::OnChklogo() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	EnableLogo(m_bLogo);
}

void CRemoteChannelConfig::OnChkchanname() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	EnableChanname(m_bChanname);
}

void CRemoteChannelConfig::EnableOsd(BOOL bEnable) 
{
	// TODO: Add your control notification handler code here
	GetDlgItem(IDC_OSD_X)->EnableWindow(bEnable);
	GetDlgItem(IDC_OSD_Y)->EnableWindow(bEnable);
	GetDlgItem(IDC_OSDATTRIB)->EnableWindow(bEnable);
	GetDlgItem(IDC_OSDTYPE)->EnableWindow(bEnable);
	GetDlgItem(IDC_CHKDISPWEEK)->EnableWindow(bEnable);
		
}

void CRemoteChannelConfig::EnableLogo(BOOL bEnable) 
{
	// TODO: Add your control notification handler code here
	GetDlgItem(IDC_LOGO_X)->EnableWindow(bEnable);
	GetDlgItem(IDC_LOGO_Y)->EnableWindow(bEnable);
	GetDlgItem(IDC_LOGOATTRIB)->EnableWindow(bEnable);
}

void CRemoteChannelConfig::EnableChanname(BOOL bEnable) 
{
	// TODO: Add your control notification handler code here
	GetDlgItem(IDC_CHANNAME_X)->EnableWindow(bEnable);
	GetDlgItem(IDC_CHANNAME_Y)->EnableWindow(bEnable);
}

void CRemoteChannelConfig::OnSelchangeComchan() 
{
	// TODO: Add your control notification handler code here
	char cTemp[100];
	m_nChanSel = m_ChannelCtrl.GetCurSel();
	m_nChanNum = m_nChanSel+m_lStartChannel;
	if(!bGetChannelPara[m_nChanSel])
	{		
		if(GetChanPara(m_nChanSel))
		{
			bGetChannelPara[m_nChanSel] = TRUE;
		}
		else
		{
			GetDlgItem(IDCHANCFGOK)->EnableWindow(FALSE);
			CString sTemp;
			sTemp.Format("获取%d通道参数失败!",m_nChanSel);
			AfxMessageBox(sTemp);
			return;
		}
	}
	if((m_compressioncfg[m_nChanSel].struRecordPara.dwVideoBitrate >> 31) && 0x01)
	{
		GetDlgItem(IDC_EDITBITRATE)->EnableWindow(TRUE);
		m_BitRateCtrl.SetCurSel(24);		//自定义码流
		m_BitRate = m_compressioncfg[m_nChanSel].struRecordPara.dwVideoBitrate & 0x7fffffff;
	}
	else
	{
		m_BitRateCtrl.SetCurSel(m_compressioncfg[m_nChanSel].struRecordPara.dwVideoBitrate);			
		m_BitRate = 0;
		GetDlgItem(IDC_EDITBITRATE)->EnableWindow(FALSE);
	}	
	m_ResolutionCtrl.SetCurSel(m_compressioncfg[m_nChanSel].struRecordPara.byResolution);
	m_StreamTypeCtrl.SetCurSel(m_compressioncfg[m_nChanSel].struRecordPara.byStreamType);
	m_ImageQualityCtrl.SetCurSel(m_compressioncfg[m_nChanSel].struRecordPara.byPicQuality);
	m_BitRateTypeCtrl.SetCurSel(m_compressioncfg[m_nChanSel].struRecordPara.byBitrateType);
	m_FrameRateCtrl.SetCurSel(m_compressioncfg[m_nChanSel].struRecordPara.dwVideoFrameRate);		
	
	m_bRecord = m_record[m_nChanSel].dwRecord;
	GetDlgItem(IDC_BUTRECORD)->EnableWindow(m_bRecord);
	m_DelayCtrl.SetCurSel(m_record[m_nChanSel].dwRecordTime);
	m_PreRecordTime.SetCurSel(m_record[m_nChanSel].dwPreRecordTime);
	ZeroMemory(cTemp, 100);
	memcpy(cTemp, m_piccfg[m_nChanSel].sChanName, NAME_LEN);
	m_ChannelName.Format("%s",cTemp);
	m_bHide = m_piccfg[m_nChanSel].dwEnableHide;
	GetDlgItem(IDC_BUTHIDE)->EnableWindow(m_bHide);
	m_bMotion = m_piccfg[m_nChanSel].struMotion.byEnableHandleMotion;
	GetDlgItem(IDC_BUTMOTION)->EnableWindow(m_bMotion);
	if(m_piccfg[m_nChanSel].strHideAlarm.dwEnableHideAlarm > 0)
	{
		m_bHideAlarm = TRUE;
	}
	else
	{
		m_bHideAlarm = FALSE;
	}
	GetDlgItem(IDC_BUTHIDEALARM)->EnableWindow(m_bHideAlarm);
	m_bChanname = m_piccfg[m_nChanSel].dwShowChanName;	
	m_channame_x = m_piccfg[m_nChanSel].wShowNameTopLeftX;
	m_channame_y = m_piccfg[m_nChanSel].wShowNameTopLeftY;
	m_bOsd = m_piccfg[m_nChanSel].dwShowOsd;	
	m_osd_x = m_piccfg[m_nChanSel].wOSDTopLeftX;
	m_osd_y = m_piccfg[m_nChanSel].wOSDTopLeftY;
	m_bDispWeek = m_piccfg[m_nChanSel].byDispWeek;
	m_OsdAttrib.SetCurSel(m_piccfg[m_nChanSel].byOSDAttrib-1);
	m_OsdType.SetCurSel(m_piccfg[m_nChanSel].byOSDType);
	m_bLogo = m_piccfg[m_nChanSel].dwShowLogo;	
	m_logo_x = m_piccfg[m_nChanSel].wLOGOTopLeftX;
	m_logo_y = m_piccfg[m_nChanSel].wLOGOTopLeftY;
	TRACE("LOGO属性: %d", m_piccfg[m_nChanSel].byLogoAttrib);
	m_LogoAttrib.SetCurSel(m_piccfg[m_nChanSel].byLogoAttrib-1);
	GetDlgItem(IDCHANCFGOK)->EnableWindow(TRUE);
	if(bRemoteRecord[m_nChanSel])
	{
		GetDlgItem(IDC_REMOTERECORD)->SetWindowText("停止录像");		
	}
	else
	{
		GetDlgItem(IDC_REMOTERECORD)->SetWindowText("远程录像");
	}
	UpdateData(FALSE);
}

void CRemoteChannelConfig::OnSelchangeCombocopychan() 
{
	// TODO: Add your control notification handler code here
	m_nCopyChanNum = m_CopyChannelCtrl.GetCurSel() - 1;
}

void CRemoteChannelConfig::OnChancfgok() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);	
	int nTemp = 0;
	memcpy(m_piccfg[m_nChanSel].sChanName,m_ChannelName,NAME_LEN);
	m_compressioncfg[m_nChanSel].struRecordPara.byStreamType = m_StreamTypeCtrl.GetCurSel();
	m_compressioncfg[m_nChanSel].struRecordPara.byPicQuality = m_ImageQualityCtrl.GetCurSel();
	if(m_BitRateCtrl.GetCurSel() == 24)	//自定义码流
	{
		nTemp = m_BitRate;
		nTemp |= 0x80000000;
		m_compressioncfg[m_nChanSel].struRecordPara.dwVideoBitrate = nTemp;
	}
	else
	{
		m_compressioncfg[m_nChanSel].struRecordPara.dwVideoBitrate = m_BitRateCtrl.GetCurSel();
	}
	m_compressioncfg[m_nChanSel].struRecordPara.byResolution = m_ResolutionCtrl.GetCurSel();
	m_compressioncfg[m_nChanSel].struRecordPara.dwVideoFrameRate = m_FrameRateCtrl.GetCurSel();
	m_compressioncfg[m_nChanSel].struRecordPara.byBitrateType = m_BitRateTypeCtrl.GetCurSel();
	
	m_record[m_nChanSel].dwRecord = m_bRecord;
	m_record[m_nChanSel].dwRecordTime = m_DelayCtrl.GetCurSel();
	m_record[m_nChanSel].dwPreRecordTime = m_PreRecordTime.GetCurSel();
	
	m_piccfg[m_nChanSel].dwEnableHide = m_bHide;
	m_piccfg[m_nChanSel].struMotion.byEnableHandleMotion = m_bMotion;
	if(!m_bHideAlarm)
	{
		m_piccfg[m_nChanSel].strHideAlarm.dwEnableHideAlarm = m_bHideAlarm;
	}
	m_piccfg[m_nChanSel].dwShowChanName = m_bChanname;
	m_piccfg[m_nChanSel].wShowNameTopLeftX = m_channame_x;
	m_piccfg[m_nChanSel].wShowNameTopLeftY = m_channame_y;
	m_piccfg[m_nChanSel].dwShowOsd = m_bOsd;
	m_piccfg[m_nChanSel].wOSDTopLeftX = m_osd_x;
	m_piccfg[m_nChanSel].wOSDTopLeftY = m_osd_y;
	m_piccfg[m_nChanSel].byDispWeek = m_bDispWeek;
	m_piccfg[m_nChanSel].byOSDAttrib = m_OsdAttrib.GetCurSel()+1;
	m_piccfg[m_nChanSel].byOSDType = m_OsdType.GetCurSel();
	m_piccfg[m_nChanSel].dwShowLogo = m_bLogo;
	m_piccfg[m_nChanSel].wLOGOTopLeftX = m_logo_x;
	m_piccfg[m_nChanSel].wLOGOTopLeftY = m_logo_y;
	m_piccfg[m_nChanSel].byLogoAttrib = m_LogoAttrib.GetCurSel()+1;
	
	bSetChannelPara[m_nChanSel] = TRUE;
	GetDlgItem(IDC_BUTCHANCOPY)->EnableWindow(TRUE);
}

void CRemoteChannelConfig::OnChancfgexit() 
{
	// TODO: Add your control notification handler code here
	for(int i=0; i<m_iChannelnumber; i++)
	{
		bSetChannelPara[i] = FALSE;
	}
}

void CRemoteChannelConfig::OnCancel() 
{
	// TODO: Add extra cleanup here
	
	//CDialog::OnCancel();
}

void CRemoteChannelConfig::OnRemoterecord() 
{
	// TODO: Add your control notification handler code here
	m_nChanSel = m_ChannelCtrl.GetCurSel();
	m_nChanNum = m_nChanSel+m_lStartChannel;
	if(!bRemoteRecord[m_nChanSel])
	{
		if(NET_DVR_StartDVRRecord(m_lServerID, m_nChanNum, 0))
		{
			GetDlgItem(IDC_REMOTERECORD)->SetWindowText("停止录像");
			bRemoteRecord[m_nChanSel] = TRUE;
		}		
	}
	else
	{
		if(NET_DVR_StopDVRRecord(m_lServerID, m_nChanNum))
		{
			GetDlgItem(IDC_REMOTERECORD)->SetWindowText("远程录像");
			bRemoteRecord[m_nChanSel] = FALSE;
		}
	}
}

void CRemoteChannelConfig::OnChkmotion() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	if(m_bMotion)
		GetDlgItem(IDC_BUTMOTION)->EnableWindow(TRUE);
	else
		GetDlgItem(IDC_BUTMOTION)->EnableWindow(FALSE);
}

void CRemoteChannelConfig::OnChkhidealarm() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	if(m_bHideAlarm)
		GetDlgItem(IDC_BUTHIDEALARM)->EnableWindow(TRUE);
	else
		GetDlgItem(IDC_BUTHIDEALARM)->EnableWindow(FALSE);
}

void CRemoteChannelConfig::OnButhidealarm() 
{
	// TODO: Add your control notification handler code here
	CRemoteHideAlarm Dlg;

	lpHideAlarm = &(m_piccfg[m_nChanSel].strHideAlarm);
	Dlg.m_iChannel = m_nChanNum;
	Dlg.m_lServerID = m_lServerID;
	Dlg.m_dwAlarmOutNum = m_dwAlarmOutNum;
	if(Dlg.DoModal() == IDOK)
	{
		bSetChannelPara[m_nChanSel] = TRUE;
	}
}

void CRemoteChannelConfig::OnSelchangeCombobitrate() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	if(m_BitRateCtrl.GetCurSel() == 24)	//自定义码流
	{
		GetDlgItem(IDC_EDITBITRATE)->EnableWindow(TRUE);
	}
	else
	{
		GetDlgItem(IDC_EDITBITRATE)->EnableWindow(FALSE);
	}
}

⌨️ 快捷键说明

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