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

📄 mainfrm.cpp

📁 入侵检测系统
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// MainFrm.cpp : implementation of the CMainFrame class
//

#include "stdafx.h"
#include "IPControl.h"
#include "Splash.h"
#include "MainFrm.h"
#include "IPControlDoc.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define MYWM_NOTIFYICON    WM_USER+101
#define ID_MYEDIT 101
#define ID_MYTREE 100
#define ID_MYLIST 99
/////////////////////////////////////////////////////////////////////////////
// CMainFrame

IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
	//{{AFX_MSG_MAP(CMainFrame)
	ON_WM_CREATE()
	ON_COMMAND(ID_BUTTONSHOWLEFT, OnButtonshowleft)
	ON_COMMAND(ID_BUTTONSHOWBOTTOM, OnButtonshowbottom)
	ON_UPDATE_COMMAND_UI(ID_BUTTONSHOWLEFT, OnUpdateButtonshowleft)
	ON_UPDATE_COMMAND_UI(ID_BUTTONSHOWBOTTOM, OnUpdateButtonshowbottom)	
	ON_COMMAND(ID_FILE_NEW, OnFileNew)
	ON_WM_CLOSE()
	ON_WM_ACTIVATE()
	ON_COMMAND(ID_FILE_SAVE, OnFileSave)
	ON_WM_TIMER()
	ON_COMMAND(ID_HELP, OnHelp)
	ON_WM_KEYDOWN()
	//}}AFX_MSG_MAP
	ON_NOTIFY(NM_CLICK,ID_MYLIST,OnListCtrlClick)
	ON_NOTIFY(TVN_SELCHANGED, ID_MYTREE, OnSelchangedTree1)
	ON_CBN_SELCHANGE(ID_TOOL_ZOOM, OnSelchangeCombo1)
END_MESSAGE_MAP()

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

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

CMainFrame::CMainFrame()
{   
	// TODO: add member initialization code here
	//this->GetActiveView()->SetFramePointer();
}

CMainFrame::~CMainFrame()
{NOTIFYICONDATA tnid;
 tnid.cbSize=sizeof(NOTIFYICONDATA);
 tnid.hWnd=this->m_hWnd;
 tnid.uID=IDR_MAINFRAME;
 Shell_NotifyIcon(NIM_DELETE,&tnid);
}

//列表筐被单击时的响应函数
//被单击->计算被选中的元素->通知文档类更新树->文档类通知视图类执行真的更新操作
void CMainFrame::OnListCtrlClick(NMHDR* pNMHDR, LRESULT* pResult)
{
	//MessageBox("CMainFrame::OnListCtrlClick");
	POSITION pos;
	pos=m_wndList.GetFirstSelectedItemPosition();
	int index=m_wndList.GetNextSelectedItem(pos); //被选中的行数,从0开始算起 -1表示没有选中
	if(index==-1) //-1表示没有选中
		return;
	ShowControlBar(&m_wndMyBarLeft,TRUE,FALSE); //使数型控件显示
	ShowControlBar(&m_wndMyBarBottom,TRUE,FALSE); //使编辑控件显示

	//获得文档指针
	CIPControlDoc* pdoc=(CIPControlDoc*)this->GetActiveDocument();
	pdoc->UpdateTree(index); //更新树形控件
	pdoc->UpdateEdit(index); //更新编辑控件
	
}
//树型控件选项改变时的响应函数
void CMainFrame::OnSelchangedTree1(NMHDR* pNMHDR, LRESULT* pResult)
{
	//MessageBox("CMainFrame::OnSelchangedTree1");
}
//组合框选项改变时的响应函数
void CMainFrame::OnSelchangeCombo1()
{   
	CString str,str1;	
	m_wndBar1.m_wndComboBox.GetWindowText(str1);
    str.Format("所选择的适配器:%s",str1);
	if(m_wndBar1.m_wndComboBox.GetCurSel()!=-1) 
	{   
		m_wndEdit.SetWindowText(str);
	}
	else
	{
		m_wndEdit.SetWindowText("还没有选择适配器!");
	}
//	MessageBox(str1);
}

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{  
CImageList img;
	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;

	if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
		 | 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_wndBar1.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP 
	 | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
		!m_wndBar1.LoadToolBar(IDR_TOOLBAR1))
	{
		TRACE0("Failed to create toolbar\n");
		return -1;      // fail to create
	}

/*
	//设置指定工具项的宽度并获取新的区域  80是宽度
	m_wndToolBar.SetButtonInfo(index,ID_TOOL_ZOOM,TBBS_SEPARATOR,80);
	m_wndToolBar.GetItemRect(index,&rect);
	rect.top+=2;
	rect.bottom+=100;

	if(!m_wndToolBar.m_wndComboBox.Create(WS_CHILD|WS_VISIBLE|CBS_AUTOHSCROLL|
		CBS_DROPDOWNLIST|CBS_HASSTRINGS,
		rect,&m_wndToolBar,ID_TOOL_ZOOM))
	{
		TRACE0("Failed to create combo-box\n");
       return FALSE;
	}
	m_wndToolBar.m_wndComboBox.ShowWindow(SW_SHOW);
*/
/*	
	m_wndToolBar.SetButtonText(0,"控制");
	m_wndToolBar.SetButtonText(1,"编辑");
	CRect rc(0, 0, 0, 0);
	CSize sizeMax(0, 0);
	CToolBarCtrl& bar = m_wndToolBar.GetToolBarCtrl();
	for(int index=bar.GetButtonCount()-1;index>=0;index--)
	{
		bar.GetItemRect(index,rc);
		rc.NormalizeRect();
		sizeMax.cx = __max(rc.Size().cx, sizeMax.cx);
		sizeMax.cy = __max(rc.Size().cy, sizeMax.cy);
	}
	m_wndToolBar.SetSizes(sizeMax,CSize(16,15));
*/	
	m_wndToolBar.GetToolBarCtrl().SetButtonWidth(40, 100);
	img.Create(28, 28, ILC_COLOR8|ILC_MASK,2,2);
	img.SetBkColor(::GetSysColor(COLOR_BTNFACE));
	img.Add(AfxGetApp()->LoadIcon(IDI_1));//0收信
    img.Add(AfxGetApp()->LoadIcon(IDI_2));//1写信
	
	img.Add(AfxGetApp()->LoadIcon(IDI_3));//2电话本
    img.Add(AfxGetApp()->LoadIcon(IDI_4));//3收信 
	img.Add(AfxGetApp()->LoadIcon(IDI_5));//2电话本
    img.Add(AfxGetApp()->LoadIcon(IDI_8));//3收信 
    img.Add(AfxGetApp()->LoadIcon(IDI_10));//2电话本
    img.Add(AfxGetApp()->LoadIcon(IDI_9));//3收信 
	img.Add(AfxGetApp()->LoadIcon(IDI_6));//2电话本
	img.Add(AfxGetApp()->LoadIcon(IDI_7));//2电话本
	m_wndToolBar.GetToolBarCtrl().SetHotImageList(&img);
	img.Detach();	
	
	//下面的代码是设置"冷"的位图
	img.Create(26, 26, ILC_COLOR8|ILC_MASK, 2,2);
	img.SetBkColor(::GetSysColor(COLOR_BTNFACE));
	img.Add(AfxGetApp()->LoadIcon(IDI_1));//0收信
    img.Add(AfxGetApp()->LoadIcon(IDI_2));//1写信
	
	img.Add(AfxGetApp()->LoadIcon(IDI_3));//2电话本
    img.Add(AfxGetApp()->LoadIcon(IDI_4));//3收信
	img.Add(AfxGetApp()->LoadIcon(IDI_5));//2电话本
    img.Add(AfxGetApp()->LoadIcon(IDI_8));//3收信 
    img.Add(AfxGetApp()->LoadIcon(IDI_10));//2电话本
	img.Add(AfxGetApp()->LoadIcon(IDI_9));//3收信 
	img.Add(AfxGetApp()->LoadIcon(IDI_6));//2电话本
	img.Add(AfxGetApp()->LoadIcon(IDI_7));//2电话本
	m_wndToolBar.GetToolBarCtrl().SetImageList(&img);
	img.Detach();
	m_wndToolBar.ModifyStyle(0, TBSTYLE_FLAT |CBRS_TOOLTIPS | TBSTYLE_TRANSPARENT|TBBS_CHECKBOX );
	m_wndToolBar.SetButtons(NULL,14);	
	m_wndToolBar.SetButtonInfo(0, ID_BUTTONSTART, TBSTYLE_BUTTON, 0);
	m_wndToolBar.SetButtonText(0, "开始扫描");	
	m_wndToolBar.SetButtonInfo(1, ID_BUTTONSTOP, TBSTYLE_BUTTON, 1);
    m_wndToolBar.SetButtonText(1, "停止扫描");
    m_wndToolBar.SetButtonInfo(2, ID_APP_EXIT, TBSTYLE_BUTTON, 2);
    m_wndToolBar.SetButtonText(2, "退出系统");
    m_wndToolBar.SetButtonInfo(3, 160, TBBS_SEPARATOR, 0);
	m_wndToolBar.SetButtonInfo(4, IDM_IDSRULE, TBSTYLE_BUTTON, 3);
	m_wndToolBar.SetButtonText(4, "规则管理");
	m_wndToolBar.SetButtonInfo(5, 160, TBBS_SEPARATOR, 0);
	
	m_wndToolBar.SetButtonInfo(6, ID_FILE_NEW, TBSTYLE_BUTTON,4);
	m_wndToolBar.SetButtonText(6, "清空记录");
	m_wndToolBar.SetButtonInfo(7, 160, TBBS_SEPARATOR, 0);
	m_wndToolBar.SetButtonInfo(8, ID_BUTTONSHOWLEFT, TBSTYLE_BUTTON,5);
    m_wndToolBar.SetButtonText(8, "记录分析");
	m_wndToolBar.SetButtonInfo(9, ID_BUTTONSHOWBOTTOM, TBSTYLE_BUTTON,6);
	m_wndToolBar.SetButtonText(9, "统计信息");
	m_wndToolBar.SetButtonInfo(10, ID_BUTTONVIEW, TBSTYLE_BUTTON,7);
    m_wndToolBar.SetButtonText(10, "行为查看");
    m_wndToolBar.SetButtonInfo(11, 160, TBBS_SEPARATOR, 0);
	m_wndToolBar.SetButtonInfo(12, ID_APP_ABOUT, TBSTYLE_BUTTON,8);
    m_wndToolBar.SetButtonText(12, "关于");
	m_wndToolBar.SetButtonInfo(13, ID_HELP, TBSTYLE_BUTTON,9);
	m_wndToolBar.SetButtonText(13, "软件帮助");
    CRect rectToolBar;
	m_wndToolBar.GetItemRect(0, &rectToolBar);
	//设置按钮的大小
	m_wndToolBar.SetSizes(rectToolBar.Size(), CSize(26,26));
	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
	}

	// 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);
	CFont* p_ParentFont = new CFont;
    p_ParentFont->CreateFont(13,0,0,0,FW_NORMAL,FALSE,FALSE,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH | FF_SWISS,"宋体");
//创建左边的控制条
	if(!m_wndMyBarLeft.Create(_T("数据包"),this,123))
	{
		MessageBox("Fail to Create m_wndMyBarLeft!");
		return -1;
	}
//创建下面的控制条
	if(!m_wndMyBarBottom.Create(_T("数据"),this,CSize(100,100),TRUE,124))
	{
		MessageBox("Fail to Create m_wndMyBarBottom!");
		return -1;
	}
	if(!m_wndMyBarRight.Create(_T("显示"),this,CSize(700,700),TRUE,125))
	{
		MessageBox("Fail to Create m_wndMyBarRight!");
		return -1;
	}

//停靠控制
	m_wndMyBarLeft.SetBarStyle(m_wndMyBarLeft.GetBarStyle()|CBRS_TOOLTIPS|CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
	m_wndMyBarBottom.SetBarStyle(m_wndMyBarBottom.GetBarStyle()|CBRS_TOOLTIPS|CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
	m_wndMyBarRight.SetBarStyle(m_wndMyBarRight.GetBarStyle()|CBRS_TOOLTIPS|CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
    
	m_wndMyBarLeft.EnableDocking(CBRS_ALIGN_ANY);
	m_wndMyBarBottom.EnableDocking(CBRS_ALIGN_ANY);
    //m_wndMyBarRight.EnableDocking(CBRS_ALIGN_ANY);

	DockControlBar(&m_wndMyBarLeft,AFX_IDW_DOCKBAR_LEFT);
    DockControlBar(&m_wndMyBarBottom,AFX_IDW_DOCKBAR_BOTTOM);
	//DockControlBar(&m_wndMyBarRight,AFX_IDW_DOCKBAR_RIGHT);
	
//在下面创建一个编辑筐
	m_wndEdit.Create(WS_VSCROLL|WS_CHILD|WS_VISIBLE|ES_AUTOVSCROLL|ES_READONLY|
		ES_MULTILINE|ES_WANTRETURN,CRect(0,0,0,0),&m_wndMyBarBottom,ID_MYEDIT);
	m_wndEdit.ModifyStyleEx(0,WS_EX_CLIENTEDGE);//WS_EX_CLIENTEDGE使之有边框 3D look
	//m_wndStatic.Create("picutre",WS_CHILD|WS_VISIBLE|SS_BLACKFRAME,CRect(0,0,0,0),&m_wndMyBarRight);
    m_wndEdit.SetFont(p_ParentFont,TRUE);
//左边添加树形控件
	m_wndTree.Create(WS_CHILD|WS_VISIBLE|TVS_HASLINES|TVS_HASBUTTONS|TVS_LINESATROOT,CRect(0,0,0,0),&m_wndMyBarLeft,ID_MYTREE);
	m_wndTree.ModifyStyleEx(0,WS_EX_CLIENTEDGE);
	// HTREEITEM hti=m_wndTree.InsertItem(_T("接收到的数据包"));
//	m_wndTree.InsertItem(_T("以太网头"),hti);
//右边添加列表筐
	m_wndList.Create(WS_CHILD|WS_VISIBLE|LVS_REPORT|LVS_ALIGNTOP|LVS_SINGLESEL|LVS_SHOWSELALWAYS|LVS_EX_FULLROWSELECT,CRect(0,0,0,0),&m_wndMyBarRight,ID_MYLIST);
	//插入3列
	m_wndList.InsertColumn(0,"序号",LVCFMT_LEFT,80);
	m_wndList.InsertColumn(1,"时间",LVCFMT_LEFT,80);
	m_wndList.InsertColumn(2,"长度",LVCFMT_LEFT,80);
	m_wndList.InsertColumn(3,"源MAC",LVCFMT_LEFT,100);
	m_wndList.InsertColumn(4,"目的MAC",LVCFMT_LEFT,100);
	m_wndList.InsertColumn(5,"类型",LVCFMT_LEFT,100);
	m_wndList.InsertColumn(6,"源IP/端口",LVCFMT_LEFT,134);
	m_wndList.InsertColumn(7,"目的IP/端口",LVCFMT_LEFT,134);
	//扩展风格
	//LVS_EX_FULLROWSELECT  可选择整行
	//LVS_EX_GRIDLINES  出现网格

⌨️ 快捷键说明

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