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

📄 newclientdlg.cpp

📁 监控开发资料,提供二次开发源码和使用说明书
💻 CPP
📖 第 1 页 / 共 5 页
字号:
		{
			myoutput[i].MoveWindow(MYVIEW_LEFT+i*iWidth+i*3,MYVIEW_TOP,iWidth,iHeight,true);
			myoutput[i].m_display_para.nLeft = MYVIEW_LEFT+i*iWidth+i*3/*-2*/;
			myoutput[i].m_display_para.nTop = MYVIEW_TOP;
			myoutput[i].m_display_para.nWidth = iWidth/*+2*/;
			myoutput[i].m_display_para.nHeight = iHeight;
			myoutput[i].ShowWindow(SW_SHOW);
		}
		for (i=3;i<6;i++)
		{
			myoutput[i].MoveWindow(MYVIEW_LEFT+(i-3)*iWidth+(i-3)*3,MYVIEW_TOP+iHeight+2,iWidth,iHeight,true);
			myoutput[i].m_display_para.nLeft = MYVIEW_LEFT+(i-3)*iWidth+(i-3)*3/*-2*/;
			myoutput[i].m_display_para.nTop = MYVIEW_TOP+iHeight+2;
			myoutput[i].m_display_para.nWidth = iWidth/*+2*/;
			myoutput[i].m_display_para.nHeight = iHeight;
			myoutput[i].ShowWindow(SW_SHOW);
		}
		for (i=6;i<9;i++)
		{
			myoutput[i].MoveWindow(MYVIEW_LEFT+(i-6)*iWidth+(i-6)*3,MYVIEW_TOP+2*iHeight+4,iWidth,iHeight,true);
			myoutput[i].m_display_para.nLeft = MYVIEW_LEFT+(i-6)*iWidth+(i-6)*3/*-2*/;
			myoutput[i].m_display_para.nTop = MYVIEW_TOP+(iHeight+2)*2;
			myoutput[i].m_display_para.nWidth = iWidth/*+2*/;
			myoutput[i].m_display_para.nHeight = iHeight;
			myoutput[i].ShowWindow(SW_SHOW);
		}
		break;
	case 16:
		if(hikClientParam.m_bMultiScreen)
		{
			iWidth = 254;
			iHeight = 190;
			MYVIEW_LEFT = 0;
			MYVIEW_TOP = 0;
		}
		else
		{
			MYVIEW_LEFT = 20;
			MYVIEW_TOP = 20;
			iWidth = 178;//176;
			iHeight = 146;//144;
		}
		bLargeWnd = FALSE;
		for(i = 0; i < 4; i++)
		{
			myoutput[i].MoveWindow(MYVIEW_LEFT+i*iWidth+i*3, MYVIEW_TOP, iWidth, iHeight, true);
			myoutput[i].m_display_para.nLeft = MYVIEW_LEFT+i*iWidth+i*3/*-2*/;
			myoutput[i].m_display_para.nTop = MYVIEW_TOP;
			myoutput[i].m_display_para.nWidth = iWidth/*+2*/;
			myoutput[i].m_display_para.nHeight = iHeight;
			myoutput[i].ShowWindow(SW_SHOW);
		}
		for(i = 4; i < 8; i++)
		{
			myoutput[i].MoveWindow(MYVIEW_LEFT+(i-4)*iWidth+(i-4)*3, MYVIEW_TOP+iHeight+2, iWidth, iHeight, true);
			myoutput[i].m_display_para.nLeft = MYVIEW_LEFT+(i-4)*iWidth+(i-4)*3/*-2*/;
			myoutput[i].m_display_para.nTop = MYVIEW_TOP+iHeight+2;
			myoutput[i].m_display_para.nWidth = iWidth/*+2*/;
			myoutput[i].m_display_para.nHeight = iHeight;
			myoutput[i].ShowWindow(SW_SHOW);
		}
		for(i = 8; i < 12; i++)
		{
			myoutput[i].MoveWindow(MYVIEW_LEFT+(i-8)*iWidth+(i-8)*3, MYVIEW_TOP+iHeight*2+4, iWidth, iHeight, true);
			myoutput[i].m_display_para.nLeft = MYVIEW_LEFT+(i-8)*iWidth+(i-8)*3/*-2*/;
			myoutput[i].m_display_para.nTop = MYVIEW_TOP+(iHeight+2)*2;
			myoutput[i].m_display_para.nWidth = iWidth/*+2*/;
			myoutput[i].m_display_para.nHeight = iHeight;
			myoutput[i].ShowWindow(SW_SHOW);
		}
		for(i = 12; i < 16; i++)
		{
			myoutput[i].MoveWindow(MYVIEW_LEFT+(i-12)*iWidth+(i-12)*3, MYVIEW_TOP+iHeight*3+6, iWidth, iHeight, true);
			myoutput[i].m_display_para.nLeft = MYVIEW_LEFT+(i-12)*iWidth+(i-12)*3/*-2*/;
			myoutput[i].m_display_para.nTop = MYVIEW_TOP+(iHeight+2)*3;
			myoutput[i].m_display_para.nWidth = iWidth/*+2*/;
			myoutput[i].m_display_para.nHeight = iHeight;
			myoutput[i].ShowWindow(SW_SHOW);
		}
		break;
	case 1:
		//	wndsize为TRUE时,表示画面中的某个窗口放大;
		//	wndsize为FALSE时,表示画面只有一个窗口,也就不需要放大、缩小;
		if(hikClientParam.m_bMultiScreen)
		{
			iWidth = 1024;
			iHeight = 768;
			MYVIEW_LEFT = 0;
			MYVIEW_TOP = 0;
		}
		else
		{
			MYVIEW_LEFT = 20;
			MYVIEW_TOP = 20;
			iWidth = 706;
			iHeight = 578;
		}
				
		myoutput[iPos].MoveWindow(MYVIEW_LEFT,MYVIEW_TOP,iWidth,iHeight,true);
		myoutput[iPos].m_display_para.nLeft = MYVIEW_LEFT;
		myoutput[iPos].m_display_para.nTop = MYVIEW_TOP;
		myoutput[iPos].m_display_para.nWidth = iWidth;
		myoutput[iPos].m_display_para.nHeight = iHeight;
		myoutput[iPos].ShowWindow(SW_SHOW);
		break;
	default:
		break;
	}
	if(hikClientParam.m_bUseCard)
	{
		TRACE("Use Decode Card");
		TRACE("iNumber = %d", iNumber);
		NET_DVR_ClearSurface_Card();
		for(i = 0; i < MAXVIEWNUM; i++)
		{
			displaypara.bToScreen = 0;
			displaypara.bToVideoOut = 1;
			displaypara.nLeft = myoutput[i].m_display_para.nLeft;
			displaypara.nTop = myoutput[i].m_display_para.nTop;
			displaypara.nWidth = myoutput[i].m_display_para.nWidth;
			displaypara.nHeight = myoutput[i].m_display_para.nHeight;
			NET_DVR_ResetPara_Card(myoutput[i].m_iPlayhandle,&displaypara);
		}
		if(iNumber == 1)
		{//放大
			displaypara.bToScreen = 1;
			displaypara.bToVideoOut = 1;
			displaypara.nLeft = myoutput[iPos].m_display_para.nLeft;
			displaypara.nTop = myoutput[iPos].m_display_para.nTop;
			displaypara.nWidth = myoutput[iPos].m_display_para.nWidth;
			displaypara.nHeight = myoutput[iPos].m_display_para.nHeight;
			NET_DVR_ResetPara_Card(myoutput[iPos].m_iPlayhandle,&displaypara);
		}
		else
		{//缩小
			for(i = 0; i < iNumber; i++)
			{
				displaypara.bToScreen = 1;
				displaypara.bToVideoOut = 1;
				displaypara.nLeft = myoutput[i].m_display_para.nLeft;
				displaypara.nTop = myoutput[i].m_display_para.nTop;
				displaypara.nWidth = myoutput[i].m_display_para.nWidth;
				displaypara.nHeight = myoutput[i].m_display_para.nHeight;
				NET_DVR_ResetPara_Card(myoutput[i].m_iPlayhandle,&displaypara);
			}
		}
	}
}

void CNewclientDlg::MoveCurWin(int iWindowNum,int iCurWinPos)
{
	CNewclientDlg*  mainwnd =(CNewclientDlg*) AfxGetMainWnd();	
	int rectWidth = 0;
	int	rectHeight = 0;
	int	rectTop = 0;
	int	rectLeft = 0;
	switch(iWindowNum)
	{
	case 1:
		rectWidth = 706;
		rectHeight = 578;
		rectTop = MYVIEW_TOP;
		rectLeft = MYVIEW_LEFT;
		break;
	case 4:
		rectWidth = 354;
		rectHeight = 290;
		switch(iCurWinPos)
		{
		case 0:
		case 1:
			rectTop  = MYVIEW_TOP;
			rectLeft = MYVIEW_LEFT+iCurWinPos*rectWidth+iCurWinPos*3; 
			break;
		case 2:
		case 3:
			rectTop  = MYVIEW_TOP+rectHeight+2;
			rectLeft = MYVIEW_LEFT+(iCurWinPos-2)*rectWidth+(iCurWinPos-2)*3; 
			break;	
		default:	
			break;	
		}
		break;
	case 9:
		rectWidth = 234;
		rectHeight = 192;
		switch(iCurWinPos)
		{
		case 0:
		case 1:
		case 2:
			rectTop  = MYVIEW_TOP;
			rectLeft = MYVIEW_LEFT+iCurWinPos*rectWidth+iCurWinPos*3; 
			break;
		case 3:
		case 4:
		case 5:
			rectTop  = MYVIEW_TOP+rectHeight + 2;
			rectLeft = MYVIEW_LEFT+(iCurWinPos-3)*rectWidth+(iCurWinPos-3)*3; 
			break;
		case 6:
		case 7:
		case 8:
			rectTop  = MYVIEW_TOP+2*rectHeight+4;
			rectLeft = MYVIEW_LEFT+(iCurWinPos-6)*rectWidth+(iCurWinPos-6)*3; 
			break;
		default:
			break;
		}
		break;
	case 16:
		rectWidth = 178;
		rectHeight = 146;
		switch(iCurWinPos)
		{
		case 0:
		case 1:
		case 2:
		case 3:
			rectTop  = MYVIEW_TOP;
			rectLeft = MYVIEW_LEFT+iCurWinPos*rectWidth+iCurWinPos*3; 
			break;
		case 4:
		case 5:
		case 6:
		case 7:
			rectTop  = MYVIEW_TOP+rectHeight+2;
			rectLeft = MYVIEW_LEFT+(iCurWinPos-4)*rectWidth+(iCurWinPos-4)*3; 
			break;
		case 8:
		case 9:
		case 10:
		case 11:
			rectTop  = MYVIEW_TOP+2*rectHeight+4;
			rectLeft = MYVIEW_LEFT+(iCurWinPos-8)*rectWidth+(iCurWinPos-8)*3; 
			break;
		case 12:
		case 13:
		case 14:
		case 15:
			rectTop  = MYVIEW_TOP+3*rectHeight+6;
			rectLeft = MYVIEW_LEFT+(iCurWinPos-12)*rectWidth+(iCurWinPos-12)*3; 
			break;
		default:
			break;
		}
		break;
	default:
		break; 
	}
	mycurwin.m_black.ShowWindow(SW_HIDE);
	mycurwin.MoveWindow(rectLeft-1,rectTop-1,rectWidth+2,rectHeight+2);
	mycurwin.m_black.ShowWindow(SW_SHOW);
	mycurwin.EnableWindow(FALSE);
}
void CNewclientDlg::InitLed()
{
	int i;
	m_pCapLed[0] = &m_CapLed1;
	m_pCapLed[1] = &m_CapLed2;
	m_pCapLed[2] = &m_CapLed3;
	m_pCapLed[3] = &m_CapLed4;
	m_pCapLed[4] = &m_CapLed5;
	m_pCapLed[5] = &m_CapLed6;
	m_pCapLed[6] = &m_CapLed7;
	m_pCapLed[7] = &m_CapLed8;
	m_pCapLed[8] = &m_CapLed9;
	m_pCapLed[9] = &m_CapLed10;
	m_pCapLed[10] = &m_CapLed11;
	m_pCapLed[11] = &m_CapLed12;
	m_pCapLed[12] = &m_CapLed13;
	m_pCapLed[13] = &m_CapLed14;
	m_pCapLed[14] = &m_CapLed15;
	m_pCapLed[15] = &m_CapLed16;

	for(i = 0; i < MAXVIEWNUM; i++)
	{
		m_pCapLed[i]->SetLed(CLed::LED_COLOR_RED,CLed::LED_DISABLED,CLed::LED_ROUND);
	}
	m_pAlarmLed[0] = &m_AlarmLed1;
	m_pAlarmLed[1] = &m_AlarmLed2;
	m_pAlarmLed[2] = &m_AlarmLed3;
	m_pAlarmLed[3] = &m_AlarmLed4;
	m_pAlarmLed[4] = &m_AlarmLed5;
	m_pAlarmLed[5] = &m_AlarmLed6;
	m_pAlarmLed[6] = &m_AlarmLed7;
	m_pAlarmLed[7] = &m_AlarmLed8;
	m_pAlarmLed[8] = &m_AlarmLed9;
	m_pAlarmLed[9] = &m_AlarmLed10;
	m_pAlarmLed[10] = &m_AlarmLed11;
	m_pAlarmLed[11] = &m_AlarmLed12;
	m_pAlarmLed[12] = &m_AlarmLed13;
	m_pAlarmLed[13] = &m_AlarmLed14;
	m_pAlarmLed[14] = &m_AlarmLed15;
	m_pAlarmLed[15] = &m_AlarmLed16;
	
	for(i = 0; i < MAXVIEWNUM; i++)
	{
		m_pAlarmLed[i]->SetLed(CLed::LED_COLOR_RED,CLed::LED_DISABLED,CLed::LED_ROUND);
	}
}
void CNewclientDlg::F_InitDecodeCard()
{
	int i;
	int nDispNum = 0;
	
	TRACE("初始化解码卡");
	int iRet=NET_DVR_InitDDraw_Card(this->m_hWnd,0xff00ff);
	
	iRet=NET_DVR_InitDevice_Card(&channelcount);
	
	TRACE("ChannelCount = %d", channelcount);	
	if(channelcount <= 0)
	{
		AfxMessageBox("请插入解码卡!");
		return;
	}
	else if(channelcount > 16)
	{
		channelcount = 16;
	}
	ULONG nTemp;
	for(i=0;i<channelcount;i++)
	{		
		NET_DVR_GetSerialNum_Card(i,&nTemp);
		TRACE("NET_DVR_GetSerialNum_Card:i:%d,%x",i,nTemp);
	}
	nDispNum = GetDisplayChannelCount();
	if(nDispNum >= 2)
	{
		REGION_PARAM param[MAX_DISPLAY_REGION];
		int i;
		memset(param, 0, sizeof(param));
		for(i=0; i<MAX_DISPLAY_REGION; i++)
			param[i].color = RGB(i, i*8, i*16);
		for(i=0; i<nDispNum/2; i++)
		{
			param[0].left=0;	param[0].top=0;		param[0].width=352;		param[0].height=288;
			param[1].left=352;	param[1].top=0;		param[1].width=352;		param[1].height=288;
			param[2].left=0;	param[2].top=288;	param[2].width=352;		param[2].height=288;
			param[3].left=352;	param[3].top=288;	param[3].width=352;		param[3].height=288;
			if(SetDisplayRegion(2*i, 4, param, 0) != HWERR_SUCCESS)
			{
				TRACE("SetDisplayRegion failed!");
			}
			
			SetDecoderVideoExtOutput(4*i, 0, 1, 2*i, 0, 0);
			SetDecoderVideoExtOutput(4*i+1, 0, 1, 2*i, 1, 0);		
			SetDecoderVideoExtOutput(4*i+2, 0, 1, 2*i, 2, 0);
			SetDecoderVideoExtOutput(4*i+3, 0, 1, 2*i, 3, 0);
			param[0].left=0;	param[0].top=0;		param[0].width=704;		param[0].height=576;
			if(SetDisplayRegion(2*i+1, 1, param, 0) != HWERR_SUCCESS)
			{
				TRACE("SetDisplayRegion failed!");
			}
			
			SetDecoderVideoExtOutput(4*i, 1, 1, 2*i+1, 0, 0);		
		}			
	}
	
	if(channelcount==1)
	{
		WINDOWNUM=1;
		m_windownum.SetCurSel(0); 
	}
	else if (channelcount<=4)
	{
		WINDOWNUM=4;
		m_windownum.SetCurSel(1);
	}
	else if(channelcount<=9)
	{
		WINDOWNUM = 9;
		m_windownum.SetCurSel(2);
	}
	else
	{
		m_windownum.SetCurSel(3);
		WINDOWNUM = 16;
	}
	
}


void CNewclientDlg::OnAudioexchange() 
{
	// TODO: Add your control notification handler code here
	if(lVoiceIndex == -1)
	{
		CVoiceExchange VoiceDlg;
		VoiceDlg.DoModal();
		if(lVoiceIndex != -1)
		{	
			GetDlgItem(IDC_AUDIOEXCHANGE)->SetWindowText("停止对讲");
		}
	}
	else
	{	
		if(NET_DVR_StopVoiceCom(lVoiceIndex))
		{
			GetDlgItem(IDC_AUDIOEXCHANGE)->SetWindowText("语音对讲");
			lVoiceIndex = -1;			
		}
		else
		{
			AfxMessageBox("停止语音对讲失败!");
		}
	}	
}

void CNewclientDlg::OnSystemcfg()  
{
	// TODO: Add your control notification handler code here
	CSystemConfig	SysCfgDlg;
	SysCfgDlg.DoModal();

	if(nUseCard == 1)
	{
		channelcount = 0;
		F_InitDecodeCard();
		ArrayWindow(0,WINDOWNUM);
		MoveCurWin(WINDOWNUM,0);
		nUseCard = 0;
	}
	if(nUseCard == 2)
	{
		NET_DVR_ReleaseDevice_Card();
		NET_DVR_ReleaseDDraw_Card();
		nUseCard = 0;
	}
	if(hikClientParam.m_bCheckServerTime)
	{
		if(checkservertimer == 0)
		{
			TRACE("启动硬盘录像机校时时钟,校时时间是每天的%06d", hikClientParam.m_iCheckServerTime);
			checkservertimer = SetTimer(CHECKSERVER_TIMER, 1000, NULL);
		}
	}
	else
	{
		if(checkservertimer)
		{
//			TRACE("关闭硬盘录像机校时时钟");
			KillTimer(CHECKSERVER_TIMER);
			checkservertimer = 0;
		}
	}
	F_JudgeDiskFull();
}

void CNewclientDlg::OnSelchangeCombowndnum() 
{
	// TODO: Add your control notification handler code here
	int i;
	WORD	wndnum;
	i = m_windownum.GetCurSel();
	switch(i)
	{
	case 0:
		wndnum = 1;

⌨️ 快捷键说明

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