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

📄 dlgflt.cpp

📁 这是一个嗅探器
💻 CPP
字号:
// DlgFlt.cpp : implementation file
//

#include "stdafx.h"
#include "snifferpro.h"
#include "DlgFlt.h"

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

/////////////////////////////////////////////////////////////////////////////
// CDlgFlt dialog


CDlgFlt::CDlgFlt(CWnd* pParent /*=NULL*/)
	: CDialog(CDlgFlt::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDlgFlt)
	m_checkA = FALSE;
	m_checkB = FALSE;
	m_dirmode= 0;
	//}}AFX_DATA_INIT
}


void CDlgFlt::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDlgFlt)
	DDX_Control(pDX, IDC_FLT_IPADDR_B, m_ipB);
	DDX_Control(pDX, IDC_FLT_IPADDR_A, m_ipA);
	DDX_Control(pDX, IDC_FLT_TREE, m_tree);
	DDX_Check(pDX, IDC_FLT_CHECKA, m_checkA);
	DDX_Check(pDX, IDC_FLT_CHECKB, m_checkB);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDlgFlt, CDialog)
	//{{AFX_MSG_MAP(CDlgFlt)
	ON_BN_CLICKED(IDC_FLT_CHECKA, OnFltChecka)
	ON_BN_CLICKED(IDC_FLT_CHECKB, OnFltCheckb)
	ON_BN_CLICKED(IDC_FLT_RADIO_AB, OnFltRadioAb)
	ON_BN_CLICKED(IDC_FLT_RADIO_BA, OnFltRadioBa)
	ON_BN_CLICKED(IDC_FLT_RADIO_BOTH, OnFltRadioBoth)
	ON_NOTIFY(NM_CLICK, IDC_FLT_TREE, OnClickFltTree)
	ON_NOTIFY(TVN_SELCHANGED, IDC_FLT_TREE, OnSelchangedFltTree)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDlgFlt message handlers

BOOL CDlgFlt::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	HICON hIcon[2];
	hIcon[0]=AfxGetApp()->LoadIcon(IDI_ICON_NO);
	hIcon[1]=AfxGetApp()->LoadIcon(IDI_ICON_YES);

	m_imageList.Create(12,12,0,3,3);
	m_imageList.Add(hIcon[0]);
	m_imageList.Add(hIcon[1]);

	m_tree.SetImageList(&m_imageList,TVSIL_NORMAL);
	if(type[TYPE_TCP])
		tcp=m_tree.InsertItem("TCP",1,1);
	else
		tcp=m_tree.InsertItem("TCP",0,0);
	if(type[TYPE_UDP])
		udp=m_tree.InsertItem("UDP",1,1);
	else
		udp=m_tree.InsertItem("UDP",0,0);
	if(type[TYPE_ICMP])
		icmp=m_tree.InsertItem("ICMP",1,1);
	else
		icmp=m_tree.InsertItem("ICMP",0,0);
	if(type[TYPE_ARP])
		arp=m_tree.InsertItem("ARP",1,1);
	else
		arp=m_tree.InsertItem("ARP",0,0);
	if(type[TYPE_RARP])
		rarp=m_tree.InsertItem("RARP",1,1);
	else
		rarp=m_tree.InsertItem("RARP",0,0);
	//if(type[TYPE_OSPF])
		//ospf=m_tree.InsertItem("OSPF",1,1);
	//else
		//ospf=m_tree.InsertItem("OSPF",0,0);
	m_tree.Expand(TVI_ROOT,TVE_EXPAND);


	//Address A and Address B
	GetDlgItem(IDC_FLT_IPADDR_A)->EnableWindow(this->m_checkA);
	if(this->m_checkA)
		m_ipA.SetAddress((DWORD)ipA);
	GetDlgItem(IDC_FLT_IPADDR_B)->EnableWindow(this->m_checkB);
	if(this->m_checkB)
		m_ipB.SetAddress((DWORD)ipB);
	switch(m_dirmode){
	case 0:
		CheckRadioButton(IDC_FLT_RADIO_AB,IDC_FLT_RADIO_BOTH,IDC_FLT_RADIO_BOTH);
		break;
	case 1:
		CheckRadioButton(IDC_FLT_RADIO_AB,IDC_FLT_RADIO_BOTH,IDC_FLT_RADIO_AB);
		break;
	case 2:
		CheckRadioButton(IDC_FLT_RADIO_AB,IDC_FLT_RADIO_BOTH,IDC_FLT_RADIO_BA);
		break;
	}

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CDlgFlt::OnFltChecka() 
{
	// TODO: Add your control notification handler code here

	if(this->m_checkA){
		GetDlgItem(IDC_FLT_IPADDR_A)->EnableWindow(FALSE);
		m_checkA=false;
	}
	else{
		GetDlgItem(IDC_FLT_IPADDR_A)->EnableWindow(TRUE);
		m_checkA=true;
	}
}

void CDlgFlt::OnFltCheckb() 
{
	// TODO: Add your control notification handler code here
	if(this->m_checkB){
		GetDlgItem(IDC_FLT_IPADDR_B)->EnableWindow(FALSE);
		m_checkB=false;
	}
	else{
		GetDlgItem(IDC_FLT_IPADDR_B)->EnableWindow(TRUE);
		m_checkB=true;
	}
}

void CDlgFlt::OnFltRadioAb() 
{
	// TODO: Add your control notification handler code here
	this->m_dirmode=1;
}

void CDlgFlt::OnFltRadioBa() 
{
	// TODO: Add your control notification handler code here
	this->m_dirmode=2;
}

void CDlgFlt::OnFltRadioBoth() 
{
	// TODO: Add your control notification handler code here
	this->m_dirmode=0;
}

void CDlgFlt::OnClickFltTree(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
}

void CDlgFlt::OnCancel() 
{
	// TODO: Add extra cleanup here
	
	CDialog::OnCancel();
}

void CDlgFlt::OnOK() //获取用户填写信息
{
	// TODO: Add extra validation here
	DWORD word;
	if(this->m_checkA){
		m_ipA.GetAddress(word);
		ipA=(int)word;
	}
	if(this->m_checkB){
		m_ipB.GetAddress(word);
		ipB=(int)word;
	}
	CDialog::OnOK();
}

void CDlgFlt::OnSelchangedFltTree(NMHDR* pNMHDR, LRESULT* pResult) //响应用户对Type筛选
{
	NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
	// TODO: Add your control notification handler code here
	HTREEITEM h=pNMTreeView->itemNew.hItem;
	if(h==tcp){//若原来要TCP,则现在不要;反之则现在要  下同
		type[TYPE_TCP]=!type[TYPE_TCP];
		int icon=type[TYPE_TCP]?1:0;
		m_tree.SetItemImage(h,icon,icon);
	}
	else if(h==udp){
		type[TYPE_UDP]=!type[TYPE_UDP];
		int icon=type[TYPE_UDP]?1:0;
		m_tree.SetItemImage(h,icon,icon);
	}
	else if(h==icmp){
		type[TYPE_ICMP]=!type[TYPE_ICMP];
		int icon=type[TYPE_ICMP]?1:0;
		m_tree.SetItemImage(h,icon,icon);
	}
	else if(h==ospf){
		type[TYPE_OSPF]=!type[TYPE_OSPF];
		int icon=type[TYPE_OSPF]?1:0;
		m_tree.SetItemImage(h,icon,icon);
	}
	else if(h==arp){
		type[TYPE_ARP]=!type[TYPE_ARP];
		int icon=type[TYPE_ARP]?1:0;
		m_tree.SetItemImage(h,icon,icon);
	}
	else if(h==rarp){
		type[TYPE_RARP]=!type[TYPE_RARP];
		int icon=type[TYPE_RARP]?1:0;
		m_tree.SetItemImage(h,icon,icon);
	}
	*pResult = 0;
}

⌨️ 快捷键说明

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