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

📄 leftview.cpp

📁 一个windows系统下查看网络拓扑结构的程序
💻 CPP
字号:
// LeftView.cpp : 实现文件
//

#include "stdafx.h"
#include "NetExplorer.h"
#include "LeftView.h"
#include ".\leftview.h"
#include "NetExplorerDoc.h"
#include "ThreadFunc2.h"
#include "NetExplorerView.h"

IMPLEMENT_DYNCREATE(CLeftView, CTreeView)

CLeftView::CLeftView()
{
	m_pImageList = new CImageList( );
	m_pImageList->Create(16, 16, ILC_MASK, 4, 1);
	AddBitmapToImageList(IDB_BITMAP7);
	AddBitmapToImageList(IDB_BITMAP10);
	AddBitmapToImageList(IDB_BITMAP8);
	AddBitmapToImageList(IDB_BITMAP9); 

}

CLeftView::~CLeftView()
{
}

BEGIN_MESSAGE_MAP(CLeftView, CTreeView)
	ON_MESSAGE(ADDROUTER,OnAddRouter)
	ON_MESSAGE(WM_PING,OnPing)
	ON_MESSAGE(WM_PING_FINISH,OnPingFinish)
	ON_WM_LBUTTONDOWN()
	ON_WM_CHAR()
END_MESSAGE_MAP()
LRESULT CLeftView::OnPing(WPARAM wp,LPARAM lp)
{
	this->GetTreeCtrl().InsertItem(((IcmpThreadPar*)lp)->Buffer,3,3,(HTREEITEM)wp);
	return 0;
}
LRESULT CLeftView::OnPingFinish(WPARAM wp,LPARAM lp)
{
	delete ((IcmpThreadPar*)lp);
	this->GetTreeCtrl().Expand((HTREEITEM)wp,TVE_EXPAND );
	return 0;
}
LRESULT CLeftView::OnAddRouter(WPARAM wp,LPARAM lp)
{
	RouterEnty * Router=(RouterEnty *)wp;
	POSITION p=Router->RouterIP.GetHeadPosition();
	CString T;
	T.Format("Router %s",this->NetIpTotring(Router->ButtonEnty.ValidIp));
	HTREEITEM CurrentRouter=this->GetTreeCtrl().InsertItem(T.GetBuffer(),1,1,this->Root);
	for(int i=0;i<Router->RouterIP.GetCount();i++)
	{
		ULONG IP=Router->RouterIP.GetNext(p);
		if(IP!=inet_addr("127.0.0.1"))
		{
			this->GetTreeCtrl().InsertItem((this->NetIpToSubNet(IP)),2,2,CurrentRouter);
		}
	}
	this->GetTreeCtrl().Expand(CurrentRouter,TVE_EXPAND );
	this->GetTreeCtrl().Expand(this->Root,TVE_EXPAND );
	return 0;
}
// CLeftView 诊断

#ifdef _DEBUG
void CLeftView::AssertValid() const
{
	CTreeView::AssertValid();
}

void CLeftView::Dump(CDumpContext& dc) const
{
	CTreeView::Dump(dc);
}
#endif //_DEBUG


// CLeftView 消息处理程序

BOOL CLeftView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: 在此添加专用代码和/或调用基类

	cs.style |= TVS_HASBUTTONS | TVS_LINESATROOT | TVS_HASLINES| TVS_FULLROWSELECT|WS_VISIBLE|WS_CHILD|WS_BORDER|TVS_HASLINES|TVS_LINESATROOT|TVS_HASBUTTONS|TVS_EDITLABELS ;
	

	return CTreeView::PreCreateWindow(cs);
}

void CLeftView::OnInitialUpdate()
{
	CTreeView::OnInitialUpdate();
	this->GetTreeCtrl().SetImageList(m_pImageList,TVSIL_NORMAL);
	Root=this->GetTreeCtrl().InsertItem("Internet",0,0);
	((CNetExplorerDoc*)(this->GetDocument()))->PLeftView=this;
	this->GetTreeCtrl().SetBkColor(RGB(255,255,240));
	// TODO: 在此添加专用代码和/或调用基类
}

void CLeftView::OnLButtonDown(UINT nFlags, CPoint point)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	HTREEITEM HitItem;
	HitItem=this->GetTreeCtrl().HitTest(point);
	if(HitItem!=this->Root)
	{
		CString Text=this->GetTreeCtrl().GetItemText(HitItem);
		if(Text.GetBuffer()[0]!='R'&&Text.GetBuffer()[0]!='H'&&this->GetTreeCtrl().GetChildItem(HitItem)==NULL)
		{
			IcmpThreadPar* P=new IcmpThreadPar;
			P->Parament.Buffer=P->Buffer;
			P->Parament.HostIP=inet_addr(Text.GetBuffer());
			P->Parament.MessageHandler=this;
			P->Parament.NetMask=inet_addr("255.255.255.0");
			P->Parament.Stop=false;
			P->Parament.wp=(WPARAM)HitItem;
			P->Parament.lp=(LPARAM)P;
			AfxBeginThread(MyPingProc2,&(P->Parament));
		}
	}
		
	CTreeView::OnLButtonDown(nFlags, point);
}

void CLeftView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值

	((CNetExplorerView*)(((CNetExplorerDoc*)(this->GetDocument()))->PNetExplorerView))->OnChildrenChar(nChar,nRepCnt,nFlags);
}

⌨️ 快捷键说明

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