myoutput.cpp

来自「监控开发资料,提供二次开发源码和使用说明书」· C++ 代码 · 共 608 行 · 第 1/2 页

CPP
608
字号
		return hBrush;
	}
	// TODO: Return a different brush if the default is not desired
	return hbr;
}

void CMyOutput::OnDestroy() 
{
	CDialog::OnDestroy();
	
	// TODO: Add your message handler code here
	
}

void CMyOutput::OnLButtonDblClk(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	iActiveWndNumber = m_iSubWndNumber;
	if(m_iPlayhandle < 0)
		return;
	CNewclientDlg*  mainwnd =(CNewclientDlg*) AfxGetMainWnd();	
	m_iWindowNum = mainwnd->WINDOWNUM;
	if(hikClientParam.m_bFullScreen || hikClientParam.m_bMultiScreen)
	{
		hikClientParam.m_bFullScreen = FALSE;
		hikClientParam.m_bEnlarged = FALSE;
		hikClientParam.m_bMultiScreen = FALSE;
		NET_DVR_ThrowBFrame(m_iPlayhandle, 2);		
		mainwnd->F_EndFullScreen();
		mainwnd->ArrayWindow(iActiveWndNumber,m_iWindowNum);
		mycurwin.ShowWindow(SW_SHOW);
		mainwnd->MoveCurWin(m_iWindowNum,iActiveWndNumber);	
		return;
	}
	
	if( (hikClientParam.m_bEnlarged) || (m_iWindowNum == 1) )
	{	//一个窗口或者窗口放大
		mainwnd->F_FullScreen();
		MoveWindow(0, 0, 1024, 768, TRUE);
		NET_DVR_ThrowBFrame(m_iPlayhandle, 0);
		ShowWindow(SW_SHOW);
		hikClientParam.m_bFullScreen = TRUE;
	}
	else
	{	//多窗口
		NET_DVR_ThrowBFrame(m_iPlayhandle,0);
		m_iWindowNum = 1;
		hikClientParam.m_bEnlarged = TRUE;
		mainwnd->ArrayWindow(iActiveWndNumber,m_iWindowNum);
		mainwnd->MoveCurWin(m_iWindowNum,iActiveWndNumber);	
	}
	if(!hikClientParam.m_bUseCard)
	{	
		DWORD dwBright,dwContrast, dwSaturation, dwHue;
		dwBright = dwContrast = dwContrast = dwHue = 0;
		NET_DVR_ClientGetVideoEffect(m_iPlayhandle, &dwBright,&dwContrast, &dwSaturation, &dwHue);
		hikClientParam.m_VideoInfo[iActiveWndNumber].m_iBrightness = dwBright;
		hikClientParam.m_VideoInfo[iActiveWndNumber].m_iContrast = dwContrast;
		hikClientParam.m_VideoInfo[iActiveWndNumber].m_iSaturation = dwSaturation;
		hikClientParam.m_VideoInfo[iActiveWndNumber].m_iHue = dwHue;
	}

	CDialog::OnLButtonDblClk(nFlags, point);
}

void CMyOutput::OnLButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	CNewclientDlg*  mainwnd =(CNewclientDlg*) AfxGetMainWnd();
	
	if(iActiveWndNumber != m_iSubWndNumber)
	{
		iActiveWndNumber = m_iSubWndNumber;
		mainwnd->MoveCurWin(mainwnd->WINDOWNUM, iActiveWndNumber);
		mainwnd->F_ShowVideoParams();
		if(!hikClientParam.m_bUseCard)
		{
			DWORD dwBright,dwContrast, dwSaturation, dwHue;
			dwBright = dwContrast = dwSaturation = dwHue = 0;
			NET_DVR_ClientGetVideoEffect(m_iPlayhandle, &dwBright,&dwContrast, &dwSaturation, &dwHue);
			hikClientParam.m_VideoInfo[iActiveWndNumber].m_iBrightness = dwBright;
			hikClientParam.m_VideoInfo[iActiveWndNumber].m_iContrast = dwContrast;
			hikClientParam.m_VideoInfo[iActiveWndNumber].m_iSaturation = dwSaturation;
			hikClientParam.m_VideoInfo[iActiveWndNumber].m_iHue = dwHue;
		}
	}

	CDialog::OnLButtonDown(nFlags, point);
}

void CMyOutput::OnMouseMove(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	
	CDialog::OnMouseMove(nFlags, point);
}

void CMyOutput::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	
	// TODO: Add your message handler code here
	if(hikClientParam.m_bUseCard)
		NET_DVR_RestoreSurface_Card();
	// Do not call CDialog::OnPaint() for painting messages
}

void CMyOutput::OnRButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	CMenu m_PopMenu;
	CNewclientDlg*  mainwnd =(CNewclientDlg*) AfxGetMainWnd();
	
	if(iActiveWndNumber != m_iSubWndNumber)
	{
		iActiveWndNumber = m_iSubWndNumber;
		mainwnd->MoveCurWin(mainwnd->WINDOWNUM, iActiveWndNumber);
		mainwnd->F_ShowVideoParams();
		if(!hikClientParam.m_bUseCard)
		{
			DWORD dwBright,dwContrast, dwSaturation, dwHue;
			dwBright = dwContrast = dwSaturation = dwHue = 0;
			NET_DVR_ClientGetVideoEffect(m_iPlayhandle, &dwBright,&dwContrast, &dwSaturation, &dwHue);
			hikClientParam.m_VideoInfo[iActiveWndNumber].m_iBrightness = dwBright;
			hikClientParam.m_VideoInfo[iActiveWndNumber].m_iContrast = dwContrast;
			hikClientParam.m_VideoInfo[iActiveWndNumber].m_iSaturation = dwSaturation;
			hikClientParam.m_VideoInfo[iActiveWndNumber].m_iHue = dwHue;
		}
	}
	
	if(hikClientParam.m_bFullScreen || hikClientParam.m_bMultiScreen)
		return;
	if(!m_PopMenu.LoadMenu(IDR_MENU1))
		return;
	ClientToScreen(&point);
	CMenu *psub = (CMenu *)m_PopMenu.GetSubMenu(0);
	psub->EnableMenuItem(0, MF_BYPOSITION | MF_DISABLED | MF_GRAYED);
	psub->EnableMenuItem(1, MF_BYPOSITION | MF_DISABLED | MF_GRAYED);
	psub->EnableMenuItem(2, MF_BYPOSITION | MF_DISABLED | MF_GRAYED);
	psub->EnableMenuItem(3, MF_BYPOSITION | MF_DISABLED | MF_GRAYED);

	if(hikClientParam.m_bCycling)
	{
		if(hikClientParam.m_bPaused)
			psub->ModifyMenu(0, MF_BYPOSITION, IDC_MENU_PAUSECYCLE, "开始循环");
		else
			psub->ModifyMenu(0, MF_BYPOSITION, IDC_MENU_PAUSECYCLE, "暂停循环");
		
		psub->EnableMenuItem(0, MF_BYPOSITION | MF_ENABLED);
		psub->EnableMenuItem(1, MF_BYPOSITION | MF_DISABLED | MF_GRAYED);
		psub->EnableMenuItem(2, MF_BYPOSITION | MF_DISABLED | MF_GRAYED);
	}
	else
	{
		if(hikClientParam.m_bNextPage)
		{
			psub->EnableMenuItem(0, MF_BYPOSITION | MF_DISABLED | MF_GRAYED);
			psub->EnableMenuItem(1, MF_BYPOSITION | MF_ENABLED);
		}
		if(hikClientParam.m_bFrontPage)
		{
			psub->EnableMenuItem(0, MF_BYPOSITION | MF_DISABLED | MF_GRAYED);
			psub->EnableMenuItem(2, MF_BYPOSITION | MF_ENABLED);
		}
	}
	//	if(m_iPlayhandle >= 0)
	{
		if(hikClientParam.m_bPlaySound[iActiveWndNumber])
			psub->ModifyMenu(3, MF_BYPOSITION, IDC_MENU_SOUND, "关闭声音");
		else
			psub->ModifyMenu(3, MF_BYPOSITION, IDC_MENU_SOUND, "打开声音");
		psub->EnableMenuItem(3, MF_BYPOSITION | MF_ENABLED);
	}
	psub->EnableMenuItem(4, MF_BYPOSITION | MF_ENABLED);
	psub->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point.x,point.y,this);
	m_PopMenu.DestroyMenu();
	CDialog::OnRButtonDown(nFlags, point);
}

void CMyOutput::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	
	CDialog::OnTimer(nIDEvent);
}


void CMyOutput::OnMenuFrontpage() 
{
	// TODO: Add your command handler code here
	CNewclientDlg*  mainwnd =(CNewclientDlg*) AfxGetMainWnd();
	mainwnd->F_FrontPage();	
}

void CMyOutput::OnMenuNextpage() 
{
	// TODO: Add your command handler code here
	CNewclientDlg*  mainwnd =(CNewclientDlg*) AfxGetMainWnd();
	mainwnd->F_NextPage();	
}

void CMyOutput::OnMenuPausecycle() 
{
	// TODO: Add your command handler code here
	CNewclientDlg*  mainwnd =(CNewclientDlg*) AfxGetMainWnd();
	mainwnd->F_CyclePause();
}

void CMyOutput::OnMenuSound() 
{
	// TODO: Add your command handler code here
	int i;
	WORD	wTemp;
	WORD	wVolumevalue;
	
	wTemp = (0xFFFF) / 100;
	wVolumevalue = 50 * wTemp;
	
	if(myoutput[iActiveWndNumber].m_iPlayhandle >= 0)
	{
		if(hikClientParam.m_bUseCard)
		{
			if(hikClientParam.m_bPlaySound[iActiveWndNumber])
			{
				NET_DVR_CloseSound_Card(myoutput[iActiveWndNumber].m_iPlayhandle);
				hikClientParam.m_bPlaySound[iActiveWndNumber] = FALSE;
			}
			else
			{
				NET_DVR_OpenSound_Card(myoutput[iActiveWndNumber].m_iPlayhandle);
				NET_DVR_AudioPreview_Card(myoutput[iActiveWndNumber].m_iPlayhandle, TRUE);
				NET_DVR_SetVolume_Card(myoutput[iActiveWndNumber].m_iPlayhandle, wVolumevalue);
				hikClientParam.m_bPlaySound[iActiveWndNumber] = TRUE;
			}
		}
		else
		{
			TRACE("Close Audio");
			if(!g_bShareSound)
			{
				NET_DVR_CloseSound();
			}
			if(hikClientParam.m_bPlaySound[iActiveWndNumber])
			{
				TRACE("Close m_bPlaySound[%d] Sound", iActiveWndNumber);
				hikClientParam.m_bPlaySound[iActiveWndNumber] = FALSE;
				if(g_bShareSound)
				{
					NET_DVR_CloseSoundShare(myoutput[iActiveWndNumber].m_iPlayhandle);
				}
			}
			else
			{
				TRACE("Open m_bPlaySound[%d] = TRUE Sound", iActiveWndNumber);
				hikClientParam.m_bPlaySound[iActiveWndNumber] = TRUE;
				if(g_bShareSound)
				{
					if(!NET_DVR_OpenSoundShare(myoutput[iActiveWndNumber].m_iPlayhandle))
						TRACE("Client Play Audio error");
				}
				else
				{
					if(!NET_DVR_OpenSound(myoutput[iActiveWndNumber].m_iPlayhandle))
						TRACE("Client Play Audio error");
				}
				if(!NET_DVR_Volume(myoutput[iActiveWndNumber].m_iPlayhandle, wVolumevalue))
					TRACE("Client Audio Volume error");
			}
		}
		if(!g_bShareSound)
		{
			for(i = 0; i < MAXVIEWNUM; i++)
			{	//关闭别的窗口声音标志
				if(i == (int)iActiveWndNumber)
					continue;
				hikClientParam.m_bPlaySound[i] = FALSE;
			}	
		}		
	}
}

void CMyOutput::OnMenuMultiscreen() 
{
	// TODO: Add your command handler code here
	if(m_iPlayhandle < 0)
		return;
	CNewclientDlg*  mainwnd = (CNewclientDlg*) AfxGetMainWnd();
	hikClientParam.m_bMultiScreen = TRUE;
	mainwnd->F_FullScreen();
	mainwnd->ArrayWindow(iActiveWndNumber,mainwnd->WINDOWNUM);
	mainwnd->MoveCurWin(mainwnd->WINDOWNUM,iActiveWndNumber);

//	StopNet();
}

void CMyOutput::invateframe()
{
	Invalidate(TRUE);
	UpdateData(FALSE);
	if(hikClientParam.m_bUseCard)
		NET_DVR_RefreshSurface_Card();
}

⌨️ 快捷键说明

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