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

📄 setalarm.cpp

📁 监控开发资料,提供二次开发源码和使用说明书
💻 CPP
字号:
// SetAlarm.cpp : implementation file
//

#include "stdafx.h"
#include "newclient.h"
#include "SetAlarm.h"

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

/////////////////////////////////////////////////////////////////////////////
// CSetAlarm dialog
extern	SERVER_INFO	serverinfo[MAXIPNUMBER];
extern	IP_INFO	allipinfo[MAXIPNUMBER][MAXCHANNUM];
extern	HIKCLIENTPARAM	hikClientParam;

CSetAlarm::CSetAlarm(CWnd* pParent /*=NULL*/)
	: CDialog(CSetAlarm::IDD, pParent)
{
	//{{AFX_DATA_INIT(CSetAlarm)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}


void CSetAlarm::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CSetAlarm)
	DDX_Control(pDX, IDC_TREEALARM, m_tree);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CSetAlarm, CDialog)
	//{{AFX_MSG_MAP(CSetAlarm)
	ON_BN_CLICKED(IDC_SELALL, OnSelall)
	ON_BN_CLICKED(IDC_NOALL, OnNoall)
	ON_NOTIFY(NM_CLICK, IDC_TREEALARM, OnClickTreealarm)
	ON_NOTIFY(NM_DBLCLK, IDC_TREEALARM, OnDblclkTreealarm)
	ON_NOTIFY(TVN_SELCHANGED, IDC_TREEALARM, OnSelchangedTreealarm)
	ON_NOTIFY(TVN_SELCHANGING, IDC_TREEALARM, OnSelchangingTreealarm)
	ON_BN_CLICKED(IDC_EXIT, OnExit)
	ON_BN_CLICKED(IDCSETALARMOK, OnCsetalarmok)
	ON_BN_CLICKED(ID_CANCEL, OnCancel)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSetAlarm message handlers

BOOL CSetAlarm::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	CBitmap	bmp[2];
	
	// TODO: Add extra initialization here
	m_bOK = FALSE;

	m_imagelist.Create(16,16,TRUE,1,1);
	bmp[0].LoadBitmap(IDB_UCHK);
	m_imagelist.Add(&bmp[0],RGB(0,0,0));
	bmp[1].LoadBitmap(IDB_CHK);
	m_imagelist.Add(&bmp[1],RGB(0,0,0));
	m_tree.SetImageList(&m_imagelist,TVSIL_NORMAL);

	for(int i = 0; i < MAXIPNUMBER; i++)
	{
		if(serverinfo[i].m_iServerChannelNumber >= 0)
		{
			F_AddNode(i);
		}
	}
	F_CheckNode();
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CSetAlarm::OnSelall() 
{
	// TODO: Add your control notification handler code here
	HTREEITEM node1;
	node1=m_tree.GetRootItem();
	while (node1!=NULL)
	{
		m_tree.SetItemImage(node1,1,1);
		node1=m_tree.GetNextSiblingItem(node1);
	}	
}

void CSetAlarm::OnNoall() 
{
	// TODO: Add your control notification handler code here
	HTREEITEM node1;
	node1=m_tree.GetRootItem();
	while (node1!=NULL)
	{
		m_tree.SetItemImage(node1,0,0);
		node1=m_tree.GetNextSiblingItem(node1);
	}
}

void CSetAlarm::F_AddNode(int ipnum)
{
	HTREEITEM node1;
	CString sTemp;
	node1=m_tree.GetRootItem();
	while (node1!=NULL)
	{
		sTemp=m_tree.GetItemText(node1);
		sTemp=sTemp.Left(sTemp.Find("("));
		if (serverinfo[ipnum].m_csServerIP == sTemp)
		{
			return;
		}
		node1=m_tree.GetNextSiblingItem(node1);
		
	}
	sTemp.Format("%s(%s)----对应报警灯%d",serverinfo[ipnum].m_csServerName,serverinfo[ipnum].m_csServerIP, ipnum+1);
	node1=m_tree.InsertItem(_T(sTemp),0,0,TVI_ROOT);
	m_tree.SetItemData(node1,ipnum);
	m_tree.Expand(node1,TVE_EXPAND);
}

void CSetAlarm::F_CheckNode()
{
	HTREEITEM node1;
	int i;
	node1=m_tree.GetRootItem();
	while (node1!=NULL)
	{
		i = m_tree.GetItemData(node1);
		if(hikClientParam.m_iAlarmHandle[i] != -1)
			m_tree.SetItemImage(node1,1,1);
		node1=m_tree.GetNextSiblingItem(node1);
	}
}

void CSetAlarm::OnClickTreealarm(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	HTREEITEM node1;
	int imageindex,selectindex;
	
	node1=m_tree.GetSelectedItem();
	if (node1==m_nSelItem) 
	{
		*pResult = 0;
		return;
	}
	m_tree.GetItemImage(node1,imageindex,selectindex);
	
	if (imageindex==1)
	{
		m_tree.SetItemImage(node1,0,0);
	}else
	{
		m_tree.SetItemImage(node1,1,1);
	}	
	*pResult = 0;
}

void CSetAlarm::OnDblclkTreealarm(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	HTREEITEM node1;
	int imageindex,selectindex;
	
	node1=m_tree.GetSelectedItem();
	m_tree.GetItemImage(node1,imageindex,selectindex);
	if (imageindex==1)
	{
		m_tree.SetItemImage(node1,0,0);
	}else
	{
		m_tree.SetItemImage(node1,1,1);
	}
	*pResult = 0;
}

void CSetAlarm::OnSelchangedTreealarm(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
	// TODO: Add your control notification handler code here
	HTREEITEM node1;
	int imageindex,selectindex;
	
	node1=m_tree.GetSelectedItem();
	if (node1==m_nSelItem) 
	{
		*pResult = 0;
		return;
	}
	m_tree.GetItemImage(node1,imageindex,selectindex);
	
	if (imageindex==1)
	{
		m_tree.SetItemImage(node1,0,0);
	}else
	{
		m_tree.SetItemImage(node1,1,1);
	}	
	*pResult = 0;
}

void CSetAlarm::OnSelchangingTreealarm(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
	// TODO: Add your control notification handler code here
	int imageindex,selectindex;
	m_nSelItem=m_tree.GetSelectedItem();
	m_tree.GetItemImage(m_nSelItem,imageindex,selectindex);
	
	if (imageindex==1)
	{
		m_tree.SetItemImage(m_nSelItem,0,0);
	}else
	{
		m_tree.SetItemImage(m_nSelItem,1,1);
	}	
	*pResult = 0;
}

void CSetAlarm::OnExit() 
{
	// TODO: Add your control notification handler code here
	CDialog::OnCancel();
}

void CSetAlarm::OnCsetalarmok() 
{
	// TODO: Add your control notification handler code here
	HTREEITEM node1;
	int imageindex,selectindex;
	int ipnum;
	CString sTemp;
	
	node1=m_tree.GetRootItem();
	while(node1!=NULL)
	{
		m_tree.GetItemImage(node1,imageindex,selectindex);
		ipnum=m_tree.GetItemData(node1);
		
		if(imageindex==1)
		{
			if(hikClientParam.m_iAlarmHandle[ipnum] == -1)
			{
				hikClientParam.m_iAlarmHandle[ipnum] = NET_DVR_SetupAlarmChan(serverinfo[ipnum].m_lServerID);
				if(hikClientParam.m_iAlarmHandle[ipnum] == -1)
				{	
					m_tree.SetItemImage(node1,0,0);
					sTemp.Format("%s报警设防失败 lasterror = %d!",serverinfo[ipnum].m_csServerName, NET_DVR_GetLastError());
					AfxMessageBox(sTemp);
				}
/*				else
				{
					NET_DVR_ALARMOUTSTATUS AlarmOutState;
					if(NET_DVR_GetAlarmOut(serverinfo[ipnum].m_lServerID,&AlarmOutState))
					{
						TRACE("AlarmOut [%d][%d][%d][%d]", AlarmOutState.Output[0], AlarmOutState.Output[1], AlarmOutState.Output[2], AlarmOutState.Output[3]);
						NET_DVR_SetAlarmOut(serverinfo[ipnum].m_lServerID, 0, 1);
						NET_DVR_SetAlarmOut(serverinfo[ipnum].m_lServerID, 1, 1);
						NET_DVR_SetAlarmOut(serverinfo[ipnum].m_lServerID, 2, 1);
						NET_DVR_SetAlarmOut(serverinfo[ipnum].m_lServerID, 3, 1);
					}
				}
*/			}
		}
		else
		{
			if(hikClientParam.m_iAlarmHandle[ipnum] >= 0)
			{
				if(NET_DVR_CloseAlarmChan(hikClientParam.m_iAlarmHandle[ipnum]))
				{
					hikClientParam.m_iAlarmHandle[ipnum] = -1;
				}
				else
				{
					m_tree.SetItemImage(node1,1,1);
					sTemp.Format("%s报警撤防失败! lasterror = %d ",serverinfo[ipnum].m_csServerName, NET_DVR_GetLastError());
					AfxMessageBox(sTemp);
				}
			}
		}
		node1=m_tree.GetNextSiblingItem(node1);
	}
	m_bOK = TRUE;
	AfxMessageBox("布防撤防完成!");	
}

void CSetAlarm::OnCancel() 
{
	// TODO: Add your control notification handler code here
	
}

⌨️ 快捷键说明

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