www.pudn.com > SnifferPro.rar > DlgFlt.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 
CString mt1,mt2,mt3,mt4; 
///////////////////////////////////////////////////////////////////////////// 
// CDlgFlt dialog 
 
 
CDlgFlt::CDlgFlt(CWnd* pParent /*=NULL*/) 
	: CDialog(CDlgFlt::IDD, pParent) 
{ 
	//{{AFX_DATA_INIT(CDlgFlt) 
	m_checkA = FALSE; 
	m_checkB = FALSE; 
	m_dirmode= 0; 
	m_time = 0; 
	m_1 = _T(""); 
	m_2 = _T(""); 
	m_3 = _T(""); 
	m_4 = _T(""); 
	//}}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); 
	DDX_Radio(pDX, IDC_RADIODEFAULT, m_time); 
	DDX_Text(pDX, IDC_EDIT2, m_1); 
	DDX_Text(pDX, IDC_EDIT4, m_2); 
	DDX_Text(pDX, IDC_EDIT5, m_3); 
	DDX_Text(pDX, IDC_EDIT6, m_4); 
	//}}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) 
	ON_BN_CLICKED(IDC_RADIODEFAULT, OnRadiodefault) 
	ON_BN_CLICKED(IDC_RADIOTIME, OnRadiotime) 
	//}}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_timelast=0; 
	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); 
	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; 
	} 
	GetDlgItem(IDC_EDIT2)->EnableWindow(false); 
	GetDlgItem(IDC_EDIT6)->EnableWindow(false); 
	GetDlgItem(IDC_EDIT4)->EnableWindow(false); 
	GetDlgItem(IDC_EDIT5)->EnableWindow(false); 
	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 
	UpdateData(true); 
	CString hnow,mnow; 
	SYSTEMTIME st = {0};  
	GetLocalTime(&st);//获得当前本地时间  
	hnow.Format("%d",st.wHour); 
	mnow.Format("%d",st.wMinute); 
	int hournow=atoi(hnow); 
	int minnow=atoi(mnow); 
	int hourfrom=atoi(m_1); 
	int minutefrom=atoi(m_2); 
	int hourto=atoi(m_3); 
	int minuteto=atoi(m_4); 
	if(m_time==1) 
	{ 
		if(hournow>hourfrom) 
		{ 
			MessageBox("起始时间小于系统当前时间,请重新输入!"); 
			return; 
		} 
		else 
		{ 
			if(minnow>minutefrom) 
			{ 
				MessageBox("起始时间小于系统当前时间,请重新输入!"); 
				return;	 
			} 
		} 
		if(hourfrom>hourto) 
		{ 
			MessageBox("起始时间大于终止时间,请重新输入!"); 
			 return;	 
		} 
		else 
		{ 
			if(minutefrom>minuteto) 
			{ 
				MessageBox("起始时间大于终止时间,请重新输入!"); 
				 return; 
			} 
		} 
		mt1=m_1; 
		mt2=m_2; 
		mt3=m_3; 
		mt4=m_4; 
	} 
	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; 
} 
 
void CDlgFlt::OnRadiodefault()  
{ 
	// TODO: Add your control notification handler code here 
    m_time=0; 
	m_timelast=0; 
	GetDlgItem(IDC_EDIT2)->EnableWindow(false); 
	GetDlgItem(IDC_EDIT6)->EnableWindow(false); 
	GetDlgItem(IDC_EDIT4)->EnableWindow(false); 
	GetDlgItem(IDC_EDIT5)->EnableWindow(false); 
	UpdateData(false); 
} 
 
void CDlgFlt::OnRadiotime()  
{ 
	// TODO: Add your control notification handler code here 
    m_time=1; 
	m_timelast=1; 
	GetDlgItem(IDC_EDIT2)->EnableWindow(true); 
	GetDlgItem(IDC_EDIT6)->EnableWindow(true); 
	GetDlgItem(IDC_EDIT4)->EnableWindow(true); 
	GetDlgItem(IDC_EDIT5)->EnableWindow(true); 
	SYSTEMTIME st = {0};  
	GetLocalTime(&st);//获得当前本地时间  
	m_1.Format("%d",st.wHour); 
	m_2.Format("%d",st.wMinute); 
	m_3.Format("%d",st.wHour); 
	m_4.Format("%d",st.wMinute); 
	GetDlgItem(IDC_EDIT2)->SetFocus(); 
    UpdateData(false); 
}