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

📄 mainfrm.cpp

📁 路由信息查看程序
💻 CPP
字号:
// MainFrm.cpp : implementation of the CMainFrame class
//

#include "stdafx.h"
#include "SnmpManager.h"
#include "FindIpDlg.h"
#include "MainFrm.h"
#include "IpInDlg.h"
#include "PrintDlg.h"

//#include "SearchResult.h"

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

/////////////////////////////////////////////////////////////////////////////
// CMainFrame

IMPLEMENT_DYNAMIC(CMainFrame, CMDIFrameWnd)

BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)
	//{{AFX_MSG_MAP(CMainFrame)
	ON_WM_CREATE()
	ON_MESSAGE(wMsg,OnRecv)
	ON_COMMAND(ID_IPDIGIT, OnIpdigit)
	ON_WM_TIMER()
	ON_COMMAND(ID_STOP, OnStop)
	ON_COMMAND(ID_AUTOFIND, OnAutofind)
	ON_COMMAND(ID_ERRORIPDIGIT, OnErroripdigit)
	ON_COMMAND(ID_GETNEXT, OnGetnext)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

static UINT indicators[] =
{
	ID_SEPARATOR,           // status line indicator
	ID_INDICATOR_CAPS,
	ID_INDICATOR_NUM,
	ID_INDICATOR_SCRL,
};

/////////////////////////////////////////////////////////////////////////////
// CMainFrame construction/destruction

CMainFrame::CMainFrame()
{
	// TODO: add member initialization code here
	
}

CMainFrame::~CMainFrame()
{
}

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
		| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
		!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
	{
		TRACE0("Failed to create toolbar\n");
		return -1;      // fail to create
	}

	if (!m_wndStatusBar.Create(this) ||
		!m_wndStatusBar.SetIndicators(indicators,
		  sizeof(indicators)/sizeof(UINT)))
	{
		TRACE0("Failed to create status bar\n");
		return -1;      // fail to create
	}

	if (!m_wndDockPageBar.Create(_T("DockPageBar"), this, CSize(230,260),TRUE,123))
	{
		TRACE0("Failed to create DockPageBar.\n");
			return -1;
	}

	m_wndDockPageBar.SetBarStyle(m_wndDockPageBar.GetBarStyle() |
		CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
	m_wndDockPageBar.EnableDocking (CBRS_ALIGN_ANY);

	if (!m_wndDockPageBar1.Create(_T("DockPageBar"), this, CSize(230,260),TRUE,1234))
	{
		TRACE0("Failed to create DockPageBar.\n");
			return -1;
	}

	m_wndDockPageBar1.SetBarStyle(m_wndDockPageBar1.GetBarStyle() |
		CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
	m_wndDockPageBar1.EnableDocking (CBRS_ALIGN_ANY);

	// TODO: Delete these three lines if you don't want the toolbar to
	//  be dockable
	m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
	EnableDocking(CBRS_ALIGN_ANY);
	DockControlBar(&m_wndToolBar);
	DockControlBar(&m_wndDockPageBar, AFX_IDW_DOCKBAR_LEFT);
	DockControlBar(&m_wndDockPageBar1, AFX_IDW_DOCKBAR_BOTTOM);

	if (!m_wndTree.Create(WS_CHILD|WS_VISIBLE|
		TVS_HASLINES|TVS_HASBUTTONS|TVS_LINESATROOT,
		CRect(0, 0, 0, 0), this, 100))
	{
		TRACE0("Failed to create instant bar child\n");
		return -1;
	}

	HTREEITEM hti1 = m_wndTree.InsertItem(_T("新建性能组"));
	
	
	
	m_wndDockPageBar.AddPage(&m_wndTree,"Contents",IDI_HELP);

	if (!m_wndEdit.Create(WS_CHILD|WS_VISIBLE|
			ES_MULTILINE|ES_WANTRETURN|ES_AUTOVSCROLL,
		CRect(0,0,0,0), this, 123))
		return -1;

	m_wndDockPageBar.AddPage(&m_wndEdit,"Edit",IDI_INDEX);
	m_wndDockPageBar1.AddPage (RUNTIME_CLASS(CSearchResult), IDD_SEARCHDIALOG, "Search Result", IDI_SEARCHRESULT);

	for(int i = 0; i <= 9; i++)
	{
		m_initOid[i] = new char[100];
	}

	for(i = 0; i <= 9; i++ )
	{
		m_value[i] = new smiVALUE[100];
		m_sOid[i] = new char[100];
		str[i] = new char[100];
	}


	return 0;
}

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
	if( !CMDIFrameWnd::PreCreateWindow(cs) )
		return FALSE;
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return TRUE;
}

/////////////////////////////////////////////////////////////////////////////
// CMainFrame diagnostics

#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
	CMDIFrameWnd::AssertValid();
}

void CMainFrame::Dump(CDumpContext& dc) const
{
	CMDIFrameWnd::Dump(dc);
}

#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CMainFrame message handlers

void CMainFrame::start ()
{
	if(pSnmp.sessionID == FALSE)	
	{
		pSnmp.CreateSession(CMainFrame::m_hWnd , wMsg);
		pSnmp.sessionID = TRUE;
	}

	pSnmp.CreateVbl(m_initOid[1], NULL);
	pSnmp.CreatePdu(SNMP_PDU_GET, NULL, NULL, NULL);
	pSnmp.Send("127.0.0.1", "public");
}

LRESULT  CMainFrame::OnRecv (WPARAM wParam, LPARAM lParam)
{
	int nIpin;
	CString strIp;
	CString strTemp;
    CString strText;
	pSnmp.Receive(m_sOid, m_value);

	for(int i=1; i <= pSnmp.nCount; i++)
	{
		switch(m_value[i]->syntax)
		{
		case SNMP_SYNTAX_INT: 
			smiINT sNumber;
			sNumber = m_value[i]->value.sNumber;
			nIpin = sNumber;
			wsprintf(str[i], "%d", sNumber);
			break;
		case SNMP_SYNTAX_UINT32:
		case SNMP_SYNTAX_CNTR32:
		case SNMP_SYNTAX_GAUGE32: 
		case SNMP_SYNTAX_TIMETICKS:
			smiUINT32 uNumber;
			uNumber = m_value[i]->value.uNumber;
			nIpin = uNumber;
			wsprintf(str[i], "%d", uNumber);
			break;
		case SNMP_SYNTAX_CNTR64:
			smiCNTR64 hNumber;
			hNumber = m_value[i]->value.hNumber ;
			break;
		case SNMP_SYNTAX_OCTETS: 
		case SNMP_SYNTAX_OPAQUE: 
		case SNMP_SYNTAX_NSAPADDR:
			str[i] = (char *)m_value[i]->value.string.ptr ;
			break;
		case SNMP_SYNTAX_IPADDR:
			strIp.Format("%d", *m_value[i]->value.string.ptr);
			strIp += ".";
			strTemp.Format("%d", *(m_value[i]->value.string.ptr+1));
			strIp += strTemp;
			strIp += ".";
			strTemp.Format("%d", *(m_value[i]->value.string.ptr+2));
			strIp += strTemp;
			strIp += ".";
			strTemp.Format("%d", *(m_value[i]->value.string.ptr+3));
			strIp += strTemp;
			strcpy(str[i], strIp);
			break;
		case SNMP_SYNTAX_OID:
			smiOID oid;

			oid = m_value[i]->value.oid;

			SnmpOidToStr(&oid, 30, str[i]);
			break;
		case SNMP_SYNTAX_NULL: 
		case SNMP_SYNTAX_NOSUCHOBJECT:
		case SNMP_SYNTAX_NOSUCHINSTANCE: 
		case SNMP_SYNTAX_ENDOFMIBVIEW:
			smiBYTE empty;

			empty = m_value[i]->value.empty;
			str[i] = "No Value Returned";

			break;
		default:
			break;
		}
	}
	pResult.Rec(m_initOid, m_sOid, str);
	CString temp_str;
	temp_str.Format ("%s", str[1]);

	int IpInReceive = atoi(temp_str.GetBuffer (0));

    m_pApp->Temp(IpInReceive);
	Invalidate();
	UpdateData(FALSE);

	if(m_bNext==TRUE)
		Next(m_sOid[1]);

	return 0;
}

void CMainFrame::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	if(nIDEvent == 1)
	{
		int i;
		static double nIpin[200];
		start();

		for(i = 200; i > 0; i--)
			nIpin[i] = nIpin[i-1];

		nIpin[0] = m_nIpin;
		int j;

		for(i = 0; i <= m_nCount; i++)
		{
			if((j = (nIpin[i] - nIpin[i+1])*5/m_nTrack) >= 10)
				j = 10;
			if(j <= 0)
				j = 0;
		}

		m_nCount++;
	}
	else if(nIDEvent == 2)
	{
		static int i = 0;
		start();

		if(i++ >= 2)
		{
			m_nTrack = m_nIpin-m_preIn;
			m_nCount = 0;
			SetTimer(1, 1000, NULL);	
			KillTimer(2);
		}

		m_preIn = m_nIpin;
	}

	CMDIFrameWnd::OnTimer(nIDEvent);
}

void CMainFrame::OnStop() 
{
	// TODO: Add your command handler code here
	KillTimer(1);
}

void CMainFrame::OnAutofind() 
{
	// TODO: Add your command handler code here
	CFindIpDlg aa;
	aa.DoModal();
}


void CMainFrame::OnIpdigit() 
{
	// TODO: Add your command handler code here
	m_initOid[1] = "1.3.6.1.2.1.4.3.0";

	m_pApp->ClearDigit();
	start();
	SetTimer(1, 1000, NULL);
}

void CMainFrame::OnErroripdigit() 
{
	// TODO: Add your command handler code here
	m_initOid[1] = "1.3.6.1.2.1.4.5.0";

	m_pApp->ClearDigit();
	start();
	SetTimer(1, 1000, NULL);
}

void CMainFrame::OnGetnext() 
{
	// TODO: Add your command handler code here
	CIpInDlg dlgIp;
	if(pSnmp.sessionID==FALSE)	
	{
		pSnmp.CreateSession(CMainFrame::m_hWnd,wMsg);
		pSnmp.sessionID=TRUE;
	}
	

	if(dlgIp.DoModal()==IDCANCEL)
		return;

	m_IpNext = dlgIp.m_IpAddress ;

	pSnmp.CreateVbl("1.3.6.1.2.1.4.21.1.7",NULL);

	pSnmp.CreatePdu(SNMP_PDU_GETNEXT,NULL,NULL,NULL);
	pSnmp.Send(m_IpNext,"public");
	m_bNext=TRUE;

}


void CMainFrame::Next (LPTSTR Oid)
{
	CString str(Oid);
	static i=0;
	if(!strcmp(str.Left(20),"1.3.6.1.2.1.4.21.1.7"))
	{
		m_OidNext[i]=new char[50];
		m_valueNext[i]=new char[50];

		strcpy(m_OidNext[i],m_sOid[1]);
		strcpy(m_valueNext[i],CMainFrame::str[1]);
		pSnmp.CreateVbl(Oid,NULL);
		pSnmp.CreatePdu(SNMP_PDU_GETNEXT,NULL,NULL,NULL);
		pSnmp.Send(m_IpNext,"public");
		i++;
	}
	else 
	{
		m_bNext=FALSE;

		CPrintDlg pDlg;
	
		pDlg.m_Oid = m_OidNext;
		pDlg.m_value = m_valueNext;
		pDlg.n = i;
		pDlg.DoModal();


	}
}

⌨️ 快捷键说明

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