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

📄 showtuopudlg.cpp

📁 动态的发现某个路由器的所有子网的拓扑结构
💻 CPP
字号:
// ShowTuoPuDlg.cpp : implementation file
//

#include "stdafx.h"
#include "MySnmp.h"
#include "ShowTuoPuDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CShowTuoPuDlg dialog


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


void CShowTuoPuDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CShowTuoPuDlg)
		// NOTE: the ClassWizard will add DDX and DDV calls here
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CShowTuoPuDlg, CDialog)
	//{{AFX_MSG_MAP(CShowTuoPuDlg)
	ON_WM_PAINT()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CShowTuoPuDlg message handlers
#include "MySubNet.h"
void CShowTuoPuDlg::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	
	// TODO: Add your message handler code here
	if(m_pSubNets==NULL)
		return;
	//////////////////////////////////////////////////////////////////////////
	//////////////////////////////////////////////////////////////////////////
	
	double pi = 3.1415926535;
	CDC* pdc=GetDC();
	pdc->SetBkMode(TRANSPARENT);

	CRect rect;
	GetClientRect(&rect);
	CPoint CenterPos;
	CenterPos=rect.CenterPoint();
	DrawHost(pdc,CenterPos,RGB(255,0,0));
	pdc->TextOut(CenterPos.x-30,CenterPos.y,m_strRouteAddress);
	int count=m_pSubNets->GetSize();
	for(int i=0;i<count;i++)
	{
		//CMySubNet* pSub=(CMySubNet*)m_pSubNets->GetAt(i);
		CPoint point;
		point.x=150*cos(2*pi/count*i)+CenterPos.x;
		point.y=150*sin(2*pi/count*i)+CenterPos.y;
		DrawHost(pdc,point,RGB(0,255,0));
		CPen pen,*oldp;
		pen.CreatePen(PS_SOLID,3,RGB(255,0,0));
		oldp=pdc->SelectObject(&pen);
		pdc->MoveTo(CenterPos.x,CenterPos.y);
		pdc->LineTo(point.x,point.y);
		pdc->SelectObject(oldp);
		CMySubNet* pTemp=(CMySubNet*)m_pSubNets->GetAt(i);
		pdc->TextOut(point.x-30,point.y,pTemp->m_Address);
		int nCount=pTemp->m_ActiveHosts.GetSize();
		//////////////////////////////////////////////////////////////////////////
//		for(int test=0;test<=20;test++)
//		{
//			CString str;
//			str.Format("192.168.0.%d",test);
//			pTemp->m_ActiveHosts.Add(str);
//		}
		//////////////////////////////////////////////////////////////////////////
		
		for(int j=0;j<nCount;j++)
		{
			CPoint p;
			p.x=60*cos(2*pi/nCount*j)+point.x;
			p.y=60*sin(2*pi/nCount*j)+point.y;
			DrawHost(pdc,p,RGB(0,0,255));
			pdc->TextOut(p.x,p.y,pTemp->m_ActiveHosts.GetAt(j));
			TRACE("%d --> %s\n",i,pTemp->m_ActiveHosts.GetAt(j));
			pdc->MoveTo(point.x,point.y);
			pdc->LineTo(p.x,p.y);
		}
	}
	// Do not call CDialog::OnPaint() for painting messages
}

void CShowTuoPuDlg::DrawHost(CDC *pdc, CPoint point,COLORREF crColor)
{
	CBrush brush,*pold;
	brush.CreateSolidBrush(crColor);
	pold=pdc->SelectObject(&brush);
	if(crColor==RGB(0,0,255))
		pdc->Rectangle(point.x-5,point.y-5,point.x+5,point.y+5);
	else
		pdc->Rectangle(point.x-10,point.y-10,point.x+10,point.y+10);
	pdc->SelectObject(pold);
}

⌨️ 快捷键说明

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