remotehidealarm.cpp

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

CPP
357
字号
// RemoteHideAlarm.cpp : implementation file
//

#include "stdafx.h"
#include "newclient.h"
#include "RemoteHideAlarm.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

extern LPNET_DVR_HIDEALARM lpHideAlarm;
RECT g_ShowRect;
RECT g_MouseRect;
//BYTE byHideScope[18][22];

void CALLBACK DrawFunShow0(long nPort,HDC hDc,DWORD nUser)
{
	CRect rect;
	int i = 0,j = 0;
	CPoint point;
	rect.left = g_MouseRect.left;
	rect.top = g_MouseRect.top;
	rect.right = g_MouseRect.right;
	rect.bottom = g_MouseRect.bottom;
	::DrawEdge(hDc,&rect,BDR_SUNKENOUTER,BF_RECT);
/*	for(i = 0;i<18;i++) 
	{
		for(j = 0;j<22;j++)
		{
			if(byHideScope[i][j] == 1)
			{
				point.x = j*16;
				point.y = i*16;
				rect.left = point.x;
				rect.top = point.y;
				rect.right = point.x + 16;
				rect.bottom = point.y + 16;
				//HBRUSH hBrush=::CreateSolidBrush(COLORREF(0xffffff));
				//::FillRect(hDc, &rect, hBrush);
				::DrawEdge(hDc,&rect,BDR_SUNKENOUTER,BF_RECT);				
			}
		}
	}
*/	SetBkMode(hDc,TRANSPARENT);
}

void CALLBACK DrawFun1(long nPort,HDC hDc,DWORD nUser)
{
	::DrawEdge(hDc,&g_ShowRect,BDR_SUNKENOUTER,BF_RECT);
	SetBkMode(hDc,TRANSPARENT);
}

/////////////////////////////////////////////////////////////////////////////
// CRemoteHideAlarm dialog


CRemoteHideAlarm::CRemoteHideAlarm(CWnd* pParent /*=NULL*/)
	: CDialog(CRemoteHideAlarm::IDD, pParent)
{
	//{{AFX_DATA_INIT(CRemoteHideAlarm)
	m_bHandleType1 = FALSE;
	m_bHandleType2 = FALSE;
	m_bHandleType3 = FALSE;
	m_bHandleType4 = FALSE;
	m_bGetHideAlarm = FALSE;
	m_bSetHideAlarm = FALSE;
	m_bAlarmOut1 = FALSE;
	m_bAlarmOut2 = FALSE;
	m_bAlarmOut3 = FALSE;
	m_bAlarmOut4 = FALSE;
	//}}AFX_DATA_INIT
}


void CRemoteHideAlarm::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CRemoteHideAlarm)
	DDX_Control(pDX, IDC_COMBO1, m_SensitiveCtrl);
	DDX_Control(pDX, IDC_DETECTPIC, m_DetectPic);
	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_CHECKHIDEALARMGETRECT, m_bGetHideAlarm);
	DDX_Check(pDX, IDC_CHECKHIDEALARMSETRECT, m_bSetHideAlarm);
	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);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CRemoteHideAlarm, CDialog)
	//{{AFX_MSG_MAP(CRemoteHideAlarm)
	ON_WM_LBUTTONDOWN()
	ON_WM_MOUSEMOVE()
	ON_BN_CLICKED(IDC_CHECKHIDEALARMGETRECT, OnCheckhidealarmgetrect)
	ON_BN_CLICKED(IDC_CHECKHIDEALARMSETRECT, OnCheckhidealarmsetrect)
	ON_BN_CLICKED(IDEXIT, OnExit)
	ON_BN_CLICKED(IDHIDEALARMOK, OnHidealarmok)
	ON_BN_CLICKED(IDC_CHECKHANDLETYPE4, OnCheckhandletype4)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CRemoteHideAlarm message handlers

BOOL CRemoteHideAlarm::OnInitDialog() 
{
	CDialog::OnInitDialog();
//	int i,j;
	// TODO: Add extra initialization here
	m_DetectPic.MoveWindow(DETECTPICLEFT,DETECTPICTOP, 352, 288);

/*	for(i = 0; i < 18; i++)
	{
		for(j = 0; j < 22; j++)
			byHideScope[i][j] = 0;
	}
*/	g_MouseRect.left = lpHideAlarm->wHideAlarmAreaTopLeftX/2;
	g_MouseRect.top = lpHideAlarm->wHideAlarmAreaTopLeftY/2;
	g_MouseRect.bottom = (lpHideAlarm->wHideAlarmAreaTopLeftY + lpHideAlarm->wHideAlarmAreaHeight)/2;
	g_MouseRect.right = (lpHideAlarm->wHideAlarmAreaTopLeftX + lpHideAlarm->wHideAlarmAreaWidth)/2;
/*	for(i = g_MouseRect.top/16; i < g_MouseRect.bottom/16; i++)
	{
		for(j = g_MouseRect.left/16; j < g_MouseRect.right/16; j++)
		{
			byHideScope[i][j] = 1;
		}
	}
*/	NET_DVR_CLIENTINFO playstru;
	playstru.hPlayWnd = m_DetectPic.GetSafeHwnd();
	playstru.lChannel = m_iChannel;
	playstru.lLinkMode = 0;
	playstru.sMultiCastIP = "";	 
	
	m_iPlayhandle = NET_DVR_RealPlay(m_lServerID, &playstru);	
	if(m_iPlayhandle == -1)
	{
		CString sTemp;
		sTemp.Format("网络连接失败!");
		AfxMessageBox(sTemp);
	}	
	m_bDrawdetect = FALSE;
	m_bHandleType1 = lpHideAlarm->strHideAlarmHandleType.dwHandleType &0x01;
	m_bHandleType2 = (lpHideAlarm->strHideAlarmHandleType.dwHandleType>>1)&0x01;
	m_bHandleType3 = (lpHideAlarm->strHideAlarmHandleType.dwHandleType>>2)&0x01;
	m_bHandleType4 = (lpHideAlarm->strHideAlarmHandleType.dwHandleType>>3)&0x01;
	EnableControl(m_bHandleType4);
	GetDlgItem(IDC_CHECKHIDEALARMGETRECT)->EnableWindow(TRUE);
	GetDlgItem(IDC_CHECKHIDEALARMSETRECT)->EnableWindow(TRUE);	
	m_SensitiveCtrl.SetCurSel(lpHideAlarm->strHideAlarmHandleType.dwHandleType-1);
	UpdateData(FALSE);
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CRemoteHideAlarm::OnOK() 
{
	// TODO: Add extra validation here
	
	//CDialog::OnOK();
}

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

void CRemoteHideAlarm::EnableControl(BOOL bEnable)
{
	if(m_dwAlarmOutNum >= 1)
	{
		GetDlgItem(IDC_CHKALARMOUT1)->EnableWindow(bEnable);
		m_bAlarmOut1 = lpHideAlarm->strHideAlarmHandleType.byRelAlarmOut[0];
	}
	if(m_dwAlarmOutNum >= 2)
	{
		GetDlgItem(IDC_CHKALARMOUT2)->EnableWindow(bEnable);
		m_bAlarmOut2 = lpHideAlarm->strHideAlarmHandleType.byRelAlarmOut[1];
	}
	if(m_dwAlarmOutNum >= 3)
	{
		GetDlgItem(IDC_CHKALARMOUT3)->EnableWindow(bEnable);
		m_bAlarmOut3 = lpHideAlarm->strHideAlarmHandleType.byRelAlarmOut[2];
	}
	if(m_dwAlarmOutNum >= 4)
	{
		GetDlgItem(IDC_CHKALARMOUT4)->EnableWindow(bEnable);
		m_bAlarmOut4 = lpHideAlarm->strHideAlarmHandleType.byRelAlarmOut[3];
	}
}

void CRemoteHideAlarm::OnLButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	if (m_bDrawdetect)
	{
		if(MK_CONTROL&nFlags)
		{
			NET_DVR_RigisterDrawFun(m_iPlayhandle, DrawFun1, 0);
			point.x -= DETECTPICLEFT;
			point.y -= DETECTPICTOP;
			if(point.x < 0)
				point.x = 0;
			g_MouseRect.left=point.x;
			if(point.y < 0)
				point.y = 0;
			g_MouseRect.top=point.y;
			g_MouseRect.right=g_MouseRect.left;
			g_MouseRect.bottom=g_MouseRect.top;
			POINT tPoint=point;
			g_ShowRect.left=tPoint.x;
			g_ShowRect.top=tPoint.y;
			g_ShowRect.right=tPoint.x+1;
			g_ShowRect.bottom=tPoint.y+1;
		}
	}	
	CDialog::OnLButtonDown(nFlags, point);
}

void CRemoteHideAlarm::OnMouseMove(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	if (m_bDrawdetect)
	{
		if(MK_CONTROL&nFlags&&MK_LBUTTON&nFlags)
		{
			point.x -= DETECTPICLEFT;
			point.y -= DETECTPICTOP;
			if(point.x > 704)
				point.x = 704;
			g_MouseRect.right=point.x;
			if(point.y > 576)
				point.y = 576;
			g_MouseRect.bottom=point.y;
			POINT tPoint=point;
			g_ShowRect.right=tPoint.x;
			g_ShowRect.bottom=tPoint.y;
		}
	}	
	CDialog::OnMouseMove(nFlags, point);
}

void CRemoteHideAlarm::OnCheckhidealarmgetrect() 
{
	// TODO: Add your control notification handler code here
	if(m_iPlayhandle < 0)
		return;
	UpdateData(TRUE);
	if(m_bSetHideAlarm)
	{
		m_bSetHideAlarm = FALSE;
		m_bDrawdetect = FALSE;
		UpdateData(FALSE);
		GetDlgItem(IDHIDEALARMOK)->EnableWindow(FALSE);
	}
	if(m_bGetHideAlarm)
	{
		NET_DVR_RigisterDrawFun(m_iPlayhandle,NULL, 0);
		Sleep(200);
		NET_DVR_RigisterDrawFun(m_iPlayhandle,DrawFunShow0, 0);
	}
	else
	{
		NET_DVR_RigisterDrawFun(m_iPlayhandle,NULL, 0);
	}
}

void CRemoteHideAlarm::OnCheckhidealarmsetrect() 
{
	// TODO: Add your control notification handler code here
	if(m_iPlayhandle < 0)
		return;
	UpdateData(TRUE);
	if(m_bGetHideAlarm)
	{
		m_bGetHideAlarm = FALSE;
		UpdateData(FALSE);
	}
	if(m_bSetHideAlarm)
	{
		NET_DVR_RigisterDrawFun(m_iPlayhandle,NULL,0);
		m_bDrawdetect = TRUE;
		GetDlgItem(IDHIDEALARMOK)->EnableWindow(TRUE);
	}
	else
	{
		m_bDrawdetect = FALSE;
		NET_DVR_RigisterDrawFun(m_iPlayhandle,NULL,0);
		GetDlgItem(IDHIDEALARMOK)->EnableWindow(FALSE);
	}
}

void CRemoteHideAlarm::OnExit() 
{
	// TODO: Add your control notification handler code here
	if(m_iPlayhandle >= 0)
	{
		NET_DVR_RigisterDrawFun(m_iPlayhandle,NULL, 0);
		NET_DVR_StopRealPlay(m_iPlayhandle);
		m_iPlayhandle = -1;
	}
	CDialog::OnOK();
}

void CRemoteHideAlarm::OnHidealarmok() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
//	int i = 0,j = 0,k = 0;
	
/*	for(i = 0; i < 18; i++)
	{
		for(j = 0; j < 22; j++)
			byHideScope[i][j] = 0;
	}
	
	for(i = g_MouseRect.top/16; i < g_MouseRect.bottom/16; i++)
	{
		for(j = g_MouseRect.left/16; j < g_MouseRect.right/16; j++)
		{
			byHideScope[i][j] = 1;
		}
	}
*/	lpHideAlarm->wHideAlarmAreaHeight = (WORD)((g_MouseRect.bottom-g_MouseRect.top)*2);
	lpHideAlarm->wHideAlarmAreaWidth = (WORD)((g_MouseRect.right-g_MouseRect.left)*2);
	lpHideAlarm->wHideAlarmAreaTopLeftX = (WORD)(g_MouseRect.left*2);
	lpHideAlarm->wHideAlarmAreaTopLeftY = (WORD)(g_MouseRect.top*2);

	lpHideAlarm->strHideAlarmHandleType.dwHandleType = 0;
	lpHideAlarm->strHideAlarmHandleType.dwHandleType |= (m_bHandleType1 << 0);
	lpHideAlarm->strHideAlarmHandleType.dwHandleType |= (m_bHandleType2 << 1);
	lpHideAlarm->strHideAlarmHandleType.dwHandleType |= (m_bHandleType3 << 2);
	lpHideAlarm->strHideAlarmHandleType.dwHandleType |= (m_bHandleType4 << 3);
	lpHideAlarm->strHideAlarmHandleType.byRelAlarmOut[0] = m_bAlarmOut1;
	lpHideAlarm->strHideAlarmHandleType.byRelAlarmOut[1] = m_bAlarmOut2;
	lpHideAlarm->strHideAlarmHandleType.byRelAlarmOut[2] = m_bAlarmOut3;
	lpHideAlarm->strHideAlarmHandleType.byRelAlarmOut[3] = m_bAlarmOut4;
	lpHideAlarm->strHideAlarmHandleType.dwHandleType = m_SensitiveCtrl.GetCurSel()+1;
	
}

void CRemoteHideAlarm::OnCheckhandletype4() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	EnableControl(m_bHandleType4);
}

⌨️ 快捷键说明

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