📄 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
/////////////////////////////////////////////////////////////////////////////
// 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 + -