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

📄 addrmapdlg.cpp

📁 实时监控
💻 CPP
字号:
// AddrMapDlg.cpp : implementation file
//

#include "stdafx.h"
#include "../resource.h"
#include "AddrMapDlg.h"
#include "../toolbars/Right_add_new.h"
#include "HtreeStruct.h"




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

/////////////////////////////////////////////////////////////////////////////
// CAddrMapDlg dialog

CAddrMapDlg::~CAddrMapDlg()
{
	/////////////////////////////////
	if(pShow)
	{
		pShow->DestroyWindow() ;
		delete pShow ;
		pShow = NULL ;
	}
	
	//////////////////////////
/*	for (int i = 0;i<50;i++)
	{
		if(pDelete[i])
		{
			delete pDelete[i] ;
		}
	}*/
}
 

CAddrMapDlg::CAddrMapDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CAddrMapDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CAddrMapDlg)
	//}}AFX_DATA_INIT
	for (int i = 0;i<50;i++)
	{
		pDelete[i] = NULL ;	
	}
}


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


BEGIN_MESSAGE_MAP(CAddrMapDlg, CDialog)
	//{{AFX_MSG_MAP(CAddrMapDlg)
	ON_MESSAGE(WM_MY_SHOW,OnShowPicture)
	ON_MESSAGE(WM_MY_MAPDELETE,OnMapDelete)
	ON_MESSAGE(WM_MY_ALARM,OnTreeAlarm)
	ON_WM_CLOSE()
	ON_BN_CLICKED(IDC_SHOW_BUTTON, OnShowButton)
	ON_BN_CLICKED(IDC_DELETE_BUTTON, OnDeleteButton)
	ON_BN_CLICKED(IDC_INSERT_BUTTON, OnInsertButton)
	ON_BN_CLICKED(IDC_QUIT_BUTTON, OnQuitButton)
	ON_BN_CLICKED(IDC_SAVE_BUTTON, OnSaveButton)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CAddrMapDlg message handlers


BOOL CAddrMapDlg::Create(CWnd* pParentWnd) 
{
	// TODO: Add your specialized code here and/or call the base class
	return CDialog::Create(IDD, pParentWnd);
}

void CAddrMapDlg::PostNcDestroy() 
{
	// TODO: Add your specialized code here and/or call the base class
	CDialog::PostNcDestroy();
}

BOOL CAddrMapDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here 
	GetDlgItem(IDC_TREE1)->MoveWindow(7, 7, 150, 422) ;
	GetDlgItem(IDC_SHOW_BUTTON)->MoveWindow(7, 448, 75, 25) ;
	GetDlgItem(IDC_DELETE_BUTTON)->MoveWindow(7, 474, 75, 25) ;
	GetDlgItem(IDC_INSERT_BUTTON)->MoveWindow(82, 448, 75, 25) ;
	GetDlgItem(IDC_SAVE_BUTTON)->MoveWindow(82, 474, 75, 25) ;
	GetDlgItem(IDC_QUIT_BUTTON)->MoveWindow(41, 502, 75, 28) ;

	m = 0 ;
	x = 0 ;
	bClose = FALSE ;

//	GetCurrentDirectory(250,strFile) ;

	char str1[250] ;
	strcpy(str1,strFile) ;
	strcat(str1,"\\res\\background.jpg") ;
	pShow = new CPictureShow(this) ;
	pShow->strFile = strFile ;
	pShow->Create(this) ;
	pShow->lpstrFile = pMem ;
	pShow->MoveWindow(164,7,800-178,600-49) ;
	pShow->ShowWindow(SW_SHOW)  ;	
	memcpy(pMem,str1,250) ;

//	GetCurrentDirectory(250,strFile) ;	
	strcpy(str0,strFile) ;
	strcat(str0,"\\data\\map.dat") ;
	FILE *fp ;
	fp = fopen(str0,"rb") ;

	CHtreeStruct	y[50] ;
	HTREEITEM	hitem[50] ;
 
//树控件数据还原
	if (fp != NULL)
	{
		fseek(fp,0,SEEK_END) ;
		int flengh = ftell(fp) ;
		fseek(fp,0,SEEK_SET) ;
		fread(&y,428,flengh/428,fp) ;
		for (int i=0;i<flengh/428;i++)
		{
			CString	string = y[i].m_ParentAddr ;
			if (string == "")
			{
				hitem[i] = m_tree.InsertItem(y[i].m_ItemText, NULL);
				pDelete[i] = new char[200] ;
				memcpy(pDelete[i],y[i].m_MapAddr,200) ;
				m_tree.SetItemData(hitem[i],(DWORD)pDelete[i]) ;
			}
			else
			{
				for (int j=0;j<i;j++)
					if (string == y[j].m_MapAddr)
					{
						hitem[i] = m_tree.InsertItem(y[i].m_ItemText, hitem[j]);
						pDelete[i] = new char[200] ;
						memcpy(pDelete[i],y[i].m_MapAddr,200) ;
						m_tree.SetItemData(hitem[i],(DWORD)pDelete[i]) ;
					}
			}
		}
		fclose(fp) ;
		if (i>0)
		{
			memcpy(pMem,y[0].m_MapAddr,200) ;
		}
		pShow->SendMessage(WM_MY_SHOWALL,0,0) ;
	}
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CAddrMapDlg::OnClose() 
{
	// TODO: Add your message handler code here and/or call default
	CDialog::OnClose();
	OnQuitButton() ;
}

void CAddrMapDlg::OnShowButton() 
{
	// TODO: Add your control notification handler code here
	HTREEITEM hitem = m_tree.GetSelectedItem();
	if (hitem == NULL)
		return ;
	DWORD fileaddr = m_tree.GetItemData(hitem) ;
	if	(fileaddr == NULL)
	{
		AfxMessageBox(afx_box_1);
		return ;
	}
		PostMessage(WM_MY_SHOW,0,fileaddr) ;	
}

void CAddrMapDlg::OnDeleteButton() 
{
	// TODO: Add your control notification handler code here
	DWORD pPtr ;
	HTREEITEM hitemD = m_tree.GetSelectedItem() ;
	HTREEITEM hitem,hitemM;
	if (hitemD == NULL)
		return ;
	////////////////////////////////
	BOOL	bChild ;
	
	bChild = m_tree.ItemHasChildren(hitemD)	;
	if(bChild)
	{	
		hitem = m_tree.GetChildItem(hitemD) ;
		while (hitem != hitemD)
		{
			bChild = m_tree.ItemHasChildren(hitem) ;
			if(bChild)
			{
				hitem = m_tree.GetChildItem(hitem) ;
			}
			else
			{
				pPtr = m_tree.GetItemData(hitem) ;
				SendMessage(WM_MY_MAPDELETE,0,pPtr) ;
				delete (char*)pPtr ;
				hitemM = hitem ;
				hitem = m_tree.GetNextSiblingItem(hitem) ;
				while (hitem == NULL)
				{
					hitem = m_tree.GetParentItem(hitemM) ;	
				}
				m_tree.DeleteItem(hitemM) ;
			}			
		}
	}
	pPtr = m_tree.GetItemData(hitemD) ;
	m_tree.DeleteItem(hitemD) ;
	SendMessage(WM_MY_MAPDELETE,0,pPtr);
	delete (char*)pPtr ;
}

void CAddrMapDlg::OnInsertButton() 
{
	// TODO: Add your control notification handler code here
	CMapAddDlg dlg ;
	HTREEITEM hitemParent = m_tree.GetSelectedItem();
	HTREEITEM hTree[50] ;	
	HTREEITEM	hMitem ;
	if (dlg.DoModal()==IDOK)
	{
		int num = m_tree.GetCount() ;				
		hTree[0] = m_tree.GetFirstVisibleItem() ;
		int i = 1 ;	
		BOOL	bChild ;
		while (i<num)
		{
			bChild	=	m_tree.ItemHasChildren(hTree[i-1])	;
			if(bChild)
			{	
				hTree[i] = m_tree.GetChildItem(hTree[i-1]) ;
				i++ ;
			}
			else
			{
				hTree[i] = m_tree.GetNextSiblingItem(hTree[i-1]) ;
				hMitem = hTree[i-1] ;
				while (hTree[i] == NULL)
				{
					hMitem = m_tree.GetParentItem(hMitem) ;
					hTree[i] = m_tree.GetNextSiblingItem(hMitem) ;
				}
				i++ ;
			}
		}
		for(i=0;i<num;i++)
		{
			CString strAddr = (char*)m_tree.GetItemData(hTree[i]) ;
			if(dlg.m_FileAddr == strAddr)
			{
				AfxMessageBox(afx_box_2);
				return ;
			}
		}
		hitem = m_tree.InsertItem(dlg.m_FileName, hitemParent);
		char* str = NULL ;
		int m_lengh = dlg.m_FileAddr.GetLength() ;
		str = dlg.m_FileAddr.GetBuffer(m_lengh) ;
		pDelete[i] = new char[200] ;
		memcpy(pDelete[i],str,200) ;
		m_tree.SetItemData(hitem,(DWORD)pDelete[i]) ;
		m_tree.SelectItem(hitem);
	}	
}

void CAddrMapDlg::OnQuitButton() 
{
	KillTimer(1);
	for (int i=0;i<pShow->x;i++)
	{
		if (pShow->pPicS[i] != NULL)
		{
			delete pShow->pPicS[i] ;
			pShow->pPicS[i] = NULL ;
		}
	}
	CHtreeStruct	hTreeStr[50] ;
	HTREEITEM	hMitem ;
	int num = m_tree.GetCount() ;
	hTreeStr[0].hTreeItem = m_tree.GetFirstVisibleItem() ;
	i = 1 ;
	BOOL	bChild ;
	while (i<num)
	{
		bChild	=	m_tree.ItemHasChildren(hTreeStr[i-1].hTreeItem)	;
		if	(bChild)
		{
			hTreeStr[i].hTreeItem =m_tree.GetChildItem(hTreeStr[i-1].hTreeItem) ;
			i++ ;
		}
		else
		{
			hTreeStr[i].hTreeItem = m_tree.GetNextSiblingItem(hTreeStr[i-1].hTreeItem) ;
			hMitem = hTreeStr[i-1].hTreeItem ;
			while (hTreeStr[i].hTreeItem ==NULL)
			{
				hMitem = m_tree.GetParentItem(hMitem) ;
				hTreeStr[i].hTreeItem = m_tree.GetNextSiblingItem(hMitem) ;
			}
			i++ ;
		}
	} 
	for(i=0;i<num;i++)
	{
		DWORD pPtr = m_tree.GetItemData(hTreeStr[i].hTreeItem) ;
		if(pPtr)
		{
			delete (char*)pPtr;
			pPtr = NULL;
		}
	}
	CDialog::OnCancel();
	if(CRight_add_new::pMapDlg)	
	{
		delete  CRight_add_new::pMapDlg;
		CRight_add_new::pMapDlg = NULL;
	}
}


void CAddrMapDlg::OnSaveButton() 
{
	// TODO: Add your control notification handler code here
	CHtreeStruct	hTreeStr[50] ;
	HTREEITEM	hMitem ;
 	int num = m_tree.GetCount() ;
	hTreeStr[0].hTreeItem = m_tree.GetFirstVisibleItem() ;
	int i = 1 ;
	BOOL	bChild ;
	while (i<num)
	{
		bChild	=	m_tree.ItemHasChildren(hTreeStr[i-1].hTreeItem)	;
		if	(bChild)
		{
			hTreeStr[i].hTreeItem =m_tree.GetChildItem(hTreeStr[i-1].hTreeItem) ;
			i++ ;
		}
		else
		{
			hTreeStr[i].hTreeItem = m_tree.GetNextSiblingItem(hTreeStr[i-1].hTreeItem) ;
			hMitem = hTreeStr[i-1].hTreeItem ;
			while (hTreeStr[i].hTreeItem ==NULL)
			{
				hMitem = m_tree.GetParentItem(hMitem) ;
				hTreeStr[i].hTreeItem = m_tree.GetNextSiblingItem(hMitem) ;
			}
			i++ ;
		}
	} 
	for (i = 0;i<num;i++)
	{
		CString str = "" ;
		hMitem = m_tree.GetParentItem(hTreeStr[i].hTreeItem) ;
		if (hMitem != NULL)
		{
			str = (char*)m_tree.GetItemData(hMitem) ;
		}
			memcpy(hTreeStr[i].m_ParentAddr,str,200) ;
//		}
//		else
//		{
//			memset(hTreeStr[i].m_ParentAddr,0,200) ;
//		}
		str = m_tree.GetItemText(hTreeStr[i].hTreeItem) ;
		memcpy(hTreeStr[i].m_ItemText,str,20) ;
		DWORD	lPtr ;
		lPtr = m_tree.GetItemData(hTreeStr[i].hTreeItem) ;
		memcpy(hTreeStr[i].m_MapAddr,(const void*)lPtr,200) ;
	
	}
	FILE	*fp ;
	strcpy(str0,strFile) ;
	strcat(str0,"\\data\\map.dat") ;
	fp = fopen(str0,"wb") ;
	fwrite(&hTreeStr,sizeof(CHtreeStruct),num,fp) ;
	fclose(fp) ;
	pShow->SendMessage(WM_MY_SAVE,0,0) ;
	if(!bClose)
	{
		AfxMessageBox(afx_box_12) ;
	}
	bClose = FALSE ;
	
}

void CAddrMapDlg::OnShowPicture(WPARAM wParam, LPARAM lParam)
{
	CString str = (char*)lParam ;
	if (str == pShow->lpstrFile )
	{
		return;
	}
	memcpy(pMem,(const void*)lParam,200) ;
	pShow->SendMessage(WM_PAINT,0,0) ;
//	pShow->SendMessageToDescendants(WM_DESTROY,TRUE,FALSE) ;
	pShow->SendMessage(WM_MY_SHOWALL,0,0) ;
}

void CAddrMapDlg::OnMapDelete(WPARAM wParam, LPARAM lParam)
{
	HTREEITEM hItem = m_tree.GetSelectedItem() ;
	if(hItem == NULL)
	{
		char str[250] ;
		strcpy(str,strFile) ;
		strcat(str,"\\res\\background.jpg") ;
		memcpy(pMem,str,250) ;
		pShow->SendMessage(WM_PAINT,0,0) ;
	}
	else
	{
		DWORD fileaddr = m_tree.GetItemData(hItem) ;
		PostMessage(WM_MY_SHOW,0,fileaddr) ;
	}
	pShow->SendMessage(WM_MY_MAPDELETE,0,lParam) ;
}

void CAddrMapDlg::OnTreeAlarm(WPARAM wParam, LPARAM lParam)
{
	CString strMap = (char*)lParam ;
	CHtreeStruct	hTreeStr[50] ;
	HTREEITEM	hMitem ;
 	int num = m_tree.GetCount() ;
	hTreeStr[0].hTreeItem = m_tree.GetFirstVisibleItem() ;
	int i = 1 ;
	BOOL	bChild ;
	while (i<num)
	{
		bChild	=	m_tree.ItemHasChildren(hTreeStr[i-1].hTreeItem)	;
		if	(bChild)
		{
			hTreeStr[i].hTreeItem =m_tree.GetChildItem(hTreeStr[i-1].hTreeItem) ;
			i++ ;
		}
		else
		{
			hTreeStr[i].hTreeItem = m_tree.GetNextSiblingItem(hTreeStr[i-1].hTreeItem) ;
			hMitem = hTreeStr[i-1].hTreeItem ;
			while (hTreeStr[i].hTreeItem ==NULL)
			{
				hMitem = m_tree.GetParentItem(hMitem) ;
				hTreeStr[i].hTreeItem = m_tree.GetNextSiblingItem(hMitem) ;
			}
			i++ ;
		}
	} 
	for (i = 0;i<num;i++)
	{
		CString str = "" ;
		str = (char*)m_tree.GetItemData(hTreeStr[i].hTreeItem) ;
		if(strMap == str)
		{
			m_tree.EnsureVisible(hTreeStr[i].hTreeItem);
			m_tree.SetItemState(hTreeStr[i].hTreeItem,TVIS_BOLD,TVIS_BOLD) ;
		}
	}
}

BOOL CAddrMapDlg::FindStation(ULONG ip,USHORT port,char* addrFile)
{
	FILE *fp ;
	CString str;
	str = addrFile ;
	str = str+"\\data\\fixture.dat";
	fp = fopen(str,"rb") ;
	if (fp == NULL)
	{
		return FALSE ;
	}
	CDlgStruct	DlgStr;
	while(fread(&DlgStr,sizeof(CDlgStruct),1,fp))
	{
		if (DlgStr.ipAddr == ip && DlgStr.portNo == port)
		{
			return TRUE;
		}
	}
	return FALSE;
}

⌨️ 快捷键说明

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