// SetSurveillance.cpp : implementation file // #include "stdafx.h" #include "newclient.h" #include "SetSurveillance.h" #include "AddSvrInfo.h" #include "RemoteParamsCfg.h" #include "ServerInfo.h" #include "ChannelInfo.h" #include "WorkState.h" #include "RemoteKey.h" #include "RemoteLog.h" #include "RemoteUpgrade.h" #include "FormatDisk.h" #include "MyOutput.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif DWORD g_dwSwitch = 0; extern SERVER_INFO serverinfo[MAXIPNUMBER]; extern IP_INFO allipinfo[MAXIPNUMBER][MAXCHANNUM]; extern IP_INFO selipinfo[MAXNUMBER]; extern int iSurveillanceNumber; extern CMyOutput myoutput[MAXVIEWNUM]; extern void WriteSurveillanceConfig(); extern void ReadSurveillanceConfig(); ///////////////////////////////////////////////////////////////////////////// // CSetSurveillance dialog CSetSurveillance::CSetSurveillance(CWnd* pParent /*=NULL*/) : CDialog(CSetSurveillance::IDD, pParent) { //{{AFX_DATA_INIT(CSetSurveillance) //}}AFX_DATA_INIT } void CSetSurveillance::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CSetSurveillance) DDX_Control(pDX, IDC_TREE2, m_treesel); DDX_Control(pDX, IDC_TREE1, m_treeall); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CSetSurveillance, CDialog) //{{AFX_MSG_MAP(CSetSurveillance) ON_BN_CLICKED(IDC_BUTTONCHOOSE, OnButtonchoose) ON_BN_CLICKED(IDC_BUTTONDOWN, OnButtondown) ON_BN_CLICKED(IDC_BUTTONUNCHOOSE, OnButtonunchoose) ON_BN_CLICKED(IDC_BUTTONUP, OnButtonup) ON_BN_CLICKED(IDC_LOGIN, OnLogin) ON_BN_CLICKED(IDC_LOGOUT, OnLogout) ON_BN_CLICKED(IDC_SERVERCFG, OnServercfg) ON_NOTIFY(NM_DBLCLK, IDC_TREE2, OnDblclkTree2) ON_NOTIFY(NM_DBLCLK, IDC_TREE1, OnDblclkTree1) ON_BN_CLICKED(IDC_SERVERSTATE, OnServerstate) ON_BN_CLICKED(IDSETREMOTEOK, OnSetremoteok) ON_BN_CLICKED(IDC_KEYCLICK, OnKeyclick) ON_BN_CLICKED(IDC_REMOTELOG, OnRemotelog) ON_NOTIFY(TVN_DELETEITEM, IDC_TREE1, OnDeleteitemTree1) ON_NOTIFY(TVN_DELETEITEM, IDC_TREE2, OnDeleteitemTree2) ON_BN_CLICKED(IDC_CHECKTIME, OnChecktime) ON_BN_CLICKED(IDC_REBOOT, OnReboot) ON_BN_CLICKED(IDC_REMOTEUPGRADE, OnRemoteupgrade) ON_BN_CLICKED(IDC_FORMATDISK, OnFormatdisk) ON_NOTIFY(NM_RCLICK, IDC_TREE1, OnRclickTree1) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CSetSurveillance message handlers BOOL CSetSurveillance::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here CRect rc(0, 0, 0, 0); GetParent()->GetClientRect(&rc); ((CTabCtrl*)GetParent())->AdjustRect(FALSE, &rc); MoveWindow(&rc); // ReadSurveillanceConfig(); //by zxy 2004/05/20 F_IniTreeall(); m_bSaveflag = FALSE; return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CSetSurveillance::OnButtonchoose() { // TODO: Add your control notification handler code here HTREEITEM node1,node2,node3; int i,j,iNum; CString sTemp; node1=m_treeall.GetSelectedItem(); if (node1==NULL) return; node2=m_treeall.GetParentItem(node1); if(node2==NULL) { node2=m_treeall.GetChildItem(node1); while (node2!=NULL) { i=m_treeall.GetItemData(node1); j=m_treeall.GetItemData(node2); iNum=i*100+j; sTemp.Format("%s(%s)",serverinfo[i].m_csServerName,allipinfo[i][j].m_csChanName); node3=m_treesel.InsertItem(sTemp,1,1,TVI_ROOT); m_treesel.SetItemData(node3,iNum); allipinfo[i][j].m_bChoosed = TRUE; node3=node2; node2=m_treeall.GetNextSiblingItem(node2); m_treeall.DeleteItem(node3); if (iSurveillanceNumber >= MAXNUMBER) { AfxMessageBox("最多可添加512路,路数达到最大!"); return; } allipinfo[i][j].m_iSequence = iSurveillanceNumber; //该监控点的顺序 selipinfo[iSurveillanceNumber].m_bChoosed = allipinfo[i][j].m_bChoosed; selipinfo[iSurveillanceNumber].m_csChanName = allipinfo[i][j].m_csChanName; selipinfo[iSurveillanceNumber].m_csIP = allipinfo[i][j].m_csIP; selipinfo[iSurveillanceNumber].m_csMultiIP = allipinfo[i][j].m_csMultiIP; selipinfo[iSurveillanceNumber].m_csPassword = allipinfo[i][j].m_csPassword; selipinfo[iSurveillanceNumber].m_csUser = allipinfo[i][j].m_csUser; selipinfo[iSurveillanceNumber].m_dwAddress = allipinfo[i][j].m_dwAddress; selipinfo[iSurveillanceNumber].m_dwAlarmlevel = allipinfo[i][j].m_dwAlarmlevel; selipinfo[iSurveillanceNumber].m_dwIPvalue = allipinfo[i][j].m_dwIPvalue; selipinfo[iSurveillanceNumber].m_dwMultiIPvalue = allipinfo[i][j].m_dwMultiIPvalue; selipinfo[iSurveillanceNumber].m_dwProtocol = allipinfo[i][j].m_dwProtocol; selipinfo[iSurveillanceNumber].m_iChannel = allipinfo[i][j].m_iChannel; selipinfo[iSurveillanceNumber].m_iSequence = allipinfo[i][j].m_iSequence; selipinfo[iSurveillanceNumber].m_lServerID = allipinfo[i][j].m_lServerID; selipinfo[iSurveillanceNumber].m_wJMQtype = allipinfo[i][j].m_wJMQtype; selipinfo[iSurveillanceNumber].m_wServerport = allipinfo[i][j].m_wServerport; selipinfo[iSurveillanceNumber].m_iServerNum = i; selipinfo[iSurveillanceNumber].m_iChannelNum = j; iSurveillanceNumber++; } } else { i=m_treeall.GetItemData(node2); j=m_treeall.GetItemData(node1); iNum=i*100+j; sTemp.Format("%s(%s)",serverinfo[i].m_csServerName,allipinfo[i][j].m_csChanName); node3=m_treesel.InsertItem(sTemp,1,1,TVI_ROOT); m_treesel.SetItemData(node3,iNum); allipinfo[i][j].m_bChoosed = TRUE; m_treeall.DeleteItem(node1); if (iSurveillanceNumber >= MAXNUMBER) { AfxMessageBox("最多可添加512路,路数达到最大!"); return; } allipinfo[i][j].m_iSequence = iSurveillanceNumber; //该监控点的顺序 selipinfo[iSurveillanceNumber].m_bChoosed = allipinfo[i][j].m_bChoosed; selipinfo[iSurveillanceNumber].m_csChanName = allipinfo[i][j].m_csChanName; selipinfo[iSurveillanceNumber].m_csIP = allipinfo[i][j].m_csIP; selipinfo[iSurveillanceNumber].m_csMultiIP = allipinfo[i][j].m_csMultiIP; selipinfo[iSurveillanceNumber].m_csPassword = allipinfo[i][j].m_csPassword; selipinfo[iSurveillanceNumber].m_csUser = allipinfo[i][j].m_csUser; selipinfo[iSurveillanceNumber].m_dwAddress = allipinfo[i][j].m_dwAddress; selipinfo[iSurveillanceNumber].m_dwAlarmlevel = allipinfo[i][j].m_dwAlarmlevel; selipinfo[iSurveillanceNumber].m_dwIPvalue = allipinfo[i][j].m_dwIPvalue; selipinfo[iSurveillanceNumber].m_dwMultiIPvalue = allipinfo[i][j].m_dwMultiIPvalue; selipinfo[iSurveillanceNumber].m_dwProtocol = allipinfo[i][j].m_dwProtocol; selipinfo[iSurveillanceNumber].m_iChannel = allipinfo[i][j].m_iChannel; selipinfo[iSurveillanceNumber].m_iSequence = allipinfo[i][j].m_iSequence; selipinfo[iSurveillanceNumber].m_lServerID = allipinfo[i][j].m_lServerID; selipinfo[iSurveillanceNumber].m_wJMQtype = allipinfo[i][j].m_wJMQtype; selipinfo[iSurveillanceNumber].m_wServerport = allipinfo[i][j].m_wServerport; selipinfo[iSurveillanceNumber].m_iServerNum = i; selipinfo[iSurveillanceNumber].m_iChannelNum = j; iSurveillanceNumber++; } } void CSetSurveillance::OnButtondown() { // TODO: Add your control notification handler code here HTREEITEM node1,node2; int num1, num2; CString sTemp; node1=m_treesel.GetSelectedItem(); if(node1==NULL) { return; } node2=m_treesel.GetNextSiblingItem(node1); if(node2==NULL) { return; } num1 = m_treesel.GetItemData(node1); num2 = m_treesel.GetItemData(node2); m_treesel.SetItemData(node1,num2); m_treesel.SetItemData(node2,num1); sTemp.Format("%s",m_treesel.GetItemText(node1)); m_treesel.SetItemText(node1,m_treesel.GetItemText(node2)); m_treesel.SetItemText(node2,sTemp); m_treesel.SelectItem(node2); Exchange(num1, num2); } void CSetSurveillance::OnButtonunchoose() { // TODO: Add your control notification handler code here HTREEITEM node1,node2,node3; int i,j,iNum, iTemp; node1=m_treesel.GetSelectedItem(); if(node1==NULL) return; iNum=m_treesel.GetItemData(node1); j=iNum % 100; i=(iNum-j)/100; iTemp = allipinfo[i][j].m_iSequence; if(iTemp < MAXVIEWNUM) { if(myoutput[iTemp].m_iPlayhandle != -1) { AfxMessageBox("请先停止网络预览,然后再从播放列表中移开!"); return; } } node2=m_treeall.GetRootItem(); while(node2!=NULL) { iTemp=m_treeall.GetItemData(node2); if(iTemp==i) { node3=m_treeall.InsertItem(allipinfo[i][j].m_csChanName,1,1,node2); m_treeall.SetItemData(node3,j); m_treeall.Expand(node2,TVE_EXPAND); break; } node2=m_treeall.GetNextSiblingItem(node2); } allipinfo[i][j].m_bChoosed = FALSE; allipinfo[i][j].m_iSequence = -1; m_treesel.DeleteItem(node1); iSurveillanceNumber--; int n; for(n=iTemp; n= MAXNUMBER) { AfxMessageBox("最多可添加512路,路数达到最大!"); return; } node1 = m_treesel.GetNextSiblingItem(node1); } } } void CSetSurveillance::OnServercfg() { // TODO: Add your control notification handler code here HTREEITEM hSel, hParent; int i; CRemoteParamsCfg RemoteParamsCfgDlg; for (i=0;i= 0) { sTemp.Format("%s", serverinfo[i].m_csServerName); node1=m_treeall.InsertItem(sTemp,0,0,TVI_ROOT); m_treeall.SetItemData(node1,i); for(j = 0; j < MAXCHANNUM; j++) { if(allipinfo[i][j].m_iChannel >= 0) { if(!allipinfo[i][j].m_bChoosed) { sTemp.Format("%s", allipinfo[i][j].m_csChanName); node2=m_treeall.InsertItem(sTemp,1,1,node1); m_treeall.SetItemData(node2,j); } else { iChannelIndex[allipinfo[i][j].m_iSequence] = i*100 + j; } } } } } for(k = 0; k < MAXNUMBER; k++) { if(iChannelIndex[k] >= 0) { j = iChannelIndex[k] % 100; i = (iChannelIndex[k] - j) / 100; iNum = i * 100 + j; sTemp.Format("%s(%s)",serverinfo[i].m_csServerName, allipinfo[i][j].m_csChanName); node2 = m_treesel.InsertItem(sTemp,1,1,TVI_ROOT); m_treesel.SetItemData(node2, iNum); } } } void CSetSurveillance::F_Save() { HTREEITEM node1; int i, j, iNum; node1 = m_treesel.GetRootItem(); iSurveillanceNumber = 0; while(node1 != NULL) { iNum = m_treesel.GetItemData(node1); j = iNum % 100; i = (iNum - j) / 100; selipinfo[iSurveillanceNumber].m_bChoosed = allipinfo[i][j].m_bChoosed; selipinfo[iSurveillanceNumber].m_csChanName = allipinfo[i][j].m_csChanName; selipinfo[iSurveillanceNumber].m_csIP = allipinfo[i][j].m_csIP; selipinfo[iSurveillanceNumber].m_csMultiIP = allipinfo[i][j].m_csMultiIP; selipinfo[iSurveillanceNumber].m_csPassword = allipinfo[i][j].m_csPassword; selipinfo[iSurveillanceNumber].m_csUser = allipinfo[i][j].m_csUser; selipinfo[iSurveillanceNumber].m_dwAddress = allipinfo[i][j].m_dwAddress; selipinfo[iSurveillanceNumber].m_dwAlarmlevel = allipinfo[i][j].m_dwAlarmlevel; selipinfo[iSurveillanceNumber].m_dwIPvalue = allipinfo[i][j].m_dwIPvalue; selipinfo[iSurveillanceNumber].m_dwMultiIPvalue = allipinfo[i][j].m_dwMultiIPvalue; selipinfo[iSurveillanceNumber].m_dwProtocol = allipinfo[i][j].m_dwProtocol; selipinfo[iSurveillanceNumber].m_iChannel = allipinfo[i][j].m_iChannel; selipinfo[iSurveillanceNumber].m_iSequence = allipinfo[i][j].m_iSequence; selipinfo[iSurveillanceNumber].m_lServerID = allipinfo[i][j].m_lServerID; selipinfo[iSurveillanceNumber].m_wJMQtype = allipinfo[i][j].m_wJMQtype; selipinfo[iSurveillanceNumber].m_wServerport = allipinfo[i][j].m_wServerport; selipinfo[iSurveillanceNumber].m_iServerNum = i; selipinfo[iSurveillanceNumber].m_iChannelNum = j; allipinfo[i][j].m_iSequence = iSurveillanceNumber; //该监控点的顺序 iSurveillanceNumber++; if (iSurveillanceNumber >= MAXNUMBER) { AfxMessageBox("最多可添加512路,路数达到最大!"); return; } node1 = m_treesel.GetNextSiblingItem(node1); } WriteSurveillanceConfig(); } void CSetSurveillance::OnServerstate() { // TODO: Add your control notification handler code here CWorkState dlg; HTREEITEM hSel, hParent; int i; hSel=m_treeall.GetSelectedItem(); if(hSel==NULL) { AfxMessageBox("请选择DVR!"); return; } hParent = m_treeall.GetParentItem(hSel); if(hParent == NULL) { i = m_treeall.GetItemData(hSel); dlg.m_csServerName = serverinfo[i].m_csServerName; dlg.m_lServerID = serverinfo[i].m_lServerID; dlg.m_dwDiskNum = serverinfo[i].m_dwDiskNum; dlg.m_iChannelnumber = serverinfo[i].m_iServerChannelNumber; dlg.DoModal(); } } void CSetSurveillance::OnSetremoteok() { // TODO: Add your control notification handler code here F_Save(); m_bSaveflag = TRUE; } void CSetSurveillance::OnCancel() { // TODO: Add extra cleanup here // CDialog::OnCancel(); } void CSetSurveillance::OnKeyclick() { // TODO: Add your control notification handler code here HTREEITEM hSel, hParent; int i; CRemoteKey Dlg; UpdateData(TRUE); hSel=m_treeall.GetSelectedItem(); if(hSel==NULL) { AfxMessageBox("请选择DVR!"); return; } hParent = m_treeall.GetParentItem(hSel); if(hParent == NULL) { i = m_treeall.GetItemData(hSel); Dlg.m_lServerID = serverinfo[i].m_lServerID; Dlg.DoModal(); } } void CSetSurveillance::OnRemotelog() { // TODO: Add your control notification handler code here CRemoteLog Dlg; Dlg.DoModal(); } void CSetSurveillance::OnDeleteitemTree1(NMHDR* pNMHDR, LRESULT* pResult) { NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR; // TODO: Add your control notification handler code here *pResult = 0; } void CSetSurveillance::OnDeleteitemTree2(NMHDR* pNMHDR, LRESULT* pResult) { NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR; // TODO: Add your control notification handler code here *pResult = 0; } void CSetSurveillance::OnChecktime() { // TODO: Add your control notification handler code here HTREEITEM hSel, hParent; int i; hSel=m_treeall.GetSelectedItem(); if(hSel==NULL) { AfxMessageBox("请选择DVR!"); return; } hParent = m_treeall.GetParentItem(hSel); if(hParent == NULL) { i = m_treeall.GetItemData(hSel); //在此调用此函数重置时区,以修正时区调整之后由于程序只在初始化时获取时区而造成不能随之调整的问题 _tzset(); CTime time1 = CTime::GetCurrentTime(); NET_DVR_TIME CurTime; CurTime.dwYear = time1.GetYear(); CurTime.dwMonth = time1.GetMonth(); CurTime.dwDay = time1.GetDay(); CurTime.dwHour = time1.GetHour(); CurTime.dwMinute = time1.GetMinute(); CurTime.dwSecond = time1.GetSecond(); if(NET_DVR_SetDVRConfig(serverinfo[i].m_lServerID, NET_DVR_SET_TIMECFG,0,&CurTime, sizeof(NET_DVR_TIME))) { AfxMessageBox("校时成功."); } else { AfxMessageBox("校时失败."); } } } void CSetSurveillance::OnReboot() { // TODO: Add your control notification handler code here HTREEITEM hSel, hParent; int i; hSel=m_treeall.GetSelectedItem(); if(hSel==NULL) { AfxMessageBox("请选择DVR!"); return; } hParent = m_treeall.GetParentItem(hSel); if(hParent == NULL) { i = m_treeall.GetItemData(hSel); if(NET_DVR_RebootDVR(serverinfo[i].m_lServerID)) { AfxMessageBox("服务器正在重启!"); } else { AfxMessageBox("重启服务器失败!"); } } } void CSetSurveillance::OnRemoteupgrade() { // TODO: Add your control notification handler code here CRemoteUpgrade UpgradeDlg; HTREEITEM hSel, hParent; int i; hSel=m_treeall.GetSelectedItem(); if(hSel==NULL) { AfxMessageBox("请选择DVR!"); return; } hParent = m_treeall.GetParentItem(hSel); if(hParent == NULL) { i = m_treeall.GetItemData(hSel); UpgradeDlg.m_lServerID = serverinfo[i].m_lServerID; UpgradeDlg.DoModal(); } } void CSetSurveillance::OnFormatdisk() { // TODO: Add your control notification handler code here CFormatDisk FormatDiskDlg; HTREEITEM hSel, hParent; int i; hSel=m_treeall.GetSelectedItem(); if(hSel==NULL) { AfxMessageBox("请选择DVR!"); return; } hParent = m_treeall.GetParentItem(hSel); if(hParent == NULL) { i = m_treeall.GetItemData(hSel); FormatDiskDlg.m_lServerID = serverinfo[i].m_lServerID; FormatDiskDlg.m_dwDiskNum = serverinfo[i].m_dwDiskNum; FormatDiskDlg.DoModal(); } } void CSetSurveillance::OnRclickTree1(NMHDR* pNMHDR, LRESULT* pResult) { // TODO: Add your control notification handler code here HTREEITEM select = m_treeall.GetSelectedItem(); if(select == NULL) return; HMENU h_Menu; h_Menu = ::CreatePopupMenu(); MENUITEMINFO mi; mi.cbSize = sizeof(MENUITEMINFO); mi.fMask = MIIM_DATA | MIIM_TYPE | MIIM_ID; mi.fType = MFT_STRING; mi.wID = IDC_MENU_SERVERCFG; mi.dwTypeData = TEXT("配置服务器"); mi.cch = sizeof(TEXT("配置服务器")); ::InsertMenuItem(h_Menu,0,FALSE,&mi); int i; CRemoteParamsCfg RemoteParamsCfgDlg; for (i=0;im_hWnd,NULL); switch(index) { case IDC_MENU_SERVERCFG: RemoteParamsCfgDlg.m_ip = serverinfo[i].m_csServerIP; RemoteParamsCfgDlg.m_Username = serverinfo[i].m_csServerAdminName; RemoteParamsCfgDlg.m_Password = serverinfo[i].m_csServerAdminPasswd; RemoteParamsCfgDlg.m_iServerport = serverinfo[i].m_wServerPort; RemoteParamsCfgDlg.m_lServerID = serverinfo[i].m_lServerID; RemoteParamsCfgDlg.m_iChannelnumber = serverinfo[i].m_iServerChannelNumber; RemoteParamsCfgDlg.m_iServertype = serverinfo[i].m_wServerType; RemoteParamsCfgDlg.m_lStartChannel = serverinfo[i].m_lStartChannel; RemoteParamsCfgDlg.m_dwAlarmInNum = serverinfo[i].m_dwAlarmInNum; RemoteParamsCfgDlg.m_dwAlarmOutNum = serverinfo[i].m_dwAlarmOutNum; RemoteParamsCfgDlg.m_dwDiskNum = serverinfo[i].m_dwDiskNum; if(strcmp(serverinfo[i].m_csServerAdminName, "admin")==0) { RemoteParamsCfgDlg.m_bSuperUser = TRUE; } else { RemoteParamsCfgDlg.m_bSuperUser = FALSE; } RemoteParamsCfgDlg.m_dvrSelect = i; RemoteParamsCfgDlg.m_iServer = i; RemoteParamsCfgDlg.DoModal(); break; default: break; } } ::DestroyMenu(h_Menu); *pResult = 0; }