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);
}