📄 generalpage.cpp
字号:
// GeneralPage.cpp : implementation file
//
#include "stdafx.h"
#include "TCPIPplugin.h"
#include "GeneralPage.h"
#include <afxdlgs.h>
#include "ConfigGen.h"
#include "ip.h"
#include "tcp.h"
#include "NetworkIfce0.h"
#include "NetworkIfce1.h"
#include "Debug.h"
#include "Memory.h"
#include "reg.h"
extern IP *g_pIP;
extern TCP *g_pTCP;
extern NetworkIfce0 *g_pNP0;
extern NetworkIfce1 *g_pNP1;
extern Debug *g_pDEBUG;
extern Memory *g_pMEMORY;
char g_config_source[512];
extern char g_last_configfile[];
bool g_load_complete_display=0;
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
typedef enum V_TYPE
{
T_MACRO,
T_MACRO_PROTECT, // Wraps around #ifndef
T_STRING,
T_OPEN_PAR,
T_CLOSE_PAR,
T_NULL // just a #define id
};
#define M_ON 1
// Used to enable or disable Network Interface -1 property page.
extern bool g_EnableNI1Page;
// If any property is changed the value will be set to true.
// used in classwizplugin.cpp if user presses ok.
//
extern bool g_save;
void ConvertBinaryMacToText(const char *bmac, char *tm)
{
char tt[8];
int ic;
tm[0] = 0;
for (ic=0;ic<6;ic++) {
sprintf(tt,"%2.2x",(unsigned char)bmac[ic]);
strcat(tm,tt);
}
}
int frhex(char ch)
{
if (('0'<=ch) && (ch<='9')) {
return ch-'0';
} else {
if (('A'<=ch) && (ch<='F')) {
return ch-'A'+10;
} else {
return ch-'a'+10;
}
}
}
void ConvertTextMacToBinary(const char *tm, char *bm)
{
char tmac[32];
char ch;
int ic,il;
strcpy(tmac,"000000000000");
strcat(tmac,tm);
il = strlen(tmac);
il -= 12; /* il points to first hex pair */
for (ic=0;ic<6;ic++) {
ch = tmac[il++];
bm[ic] = (frhex(ch)<<4) + frhex(tmac[il++]);
}
}
/////////////////////////////////////////////////////////////////////////////
// GeneralPage property page
IMPLEMENT_DYNCREATE(GeneralPage, CPropertyPage)
GeneralPage::GeneralPage() : CPropertyPage(GeneralPage::IDD)
{
//{{AFX_DATA_INIT(GeneralPage)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
InitDefaultGeneralSettings();
}
GeneralPage::~GeneralPage()
{
}
void GeneralPage::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(GeneralPage)
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
CButton *pButtonGenerateFiles = (CButton*)GetDlgItem(IDC_BUTTON_ADDPROJECT);
if(pButtonGenerateFiles)
pButtonGenerateFiles->EnableWindow(FALSE);
if(stricmp(g_last_configfile,"") && !g_load_complete_display)
{
CStatic *pEdit_ConfigFile = (CStatic*)GetDlgItem(IDC_EDIT_CONFIG_FILE);
SetFileName(g_last_configfile);
strcpy(g_config_source,g_last_configfile);
g_load_complete_display = 1;
}
PopulateGeneralPageSettings();
if(stricmp(g_last_configfile,"") && (pButtonGenerateFiles))
pButtonGenerateFiles->EnableWindow(TRUE);
CButton *pSaveButton = (CButton*)GetDlgItem(IDC_BUTTON_SAVEAS);
if(g_save == true)
pSaveButton->EnableWindow(TRUE);
else
pSaveButton->EnableWindow(FALSE);
if(m_multiple_networks == true)
g_EnableNI1Page = true;
else
g_EnableNI1Page = false;
}
BEGIN_MESSAGE_MAP(GeneralPage, CPropertyPage)
//{{AFX_MSG_MAP(GeneralPage)
ON_BN_CLICKED(IDC_CHECK_PROTO_ALL, OnCheckProtoAll)
ON_BN_CLICKED(IDC_CHECK_ALL_STAT, OnCheckAllStat)
ON_BN_CLICKED(IDC_CHECK_PROTO_TCP, OnCheckProtoTcp)
ON_BN_CLICKED(IDC_CHECK_PROTO_UDP, OnCheckProtoUdp)
ON_BN_CLICKED(IDC_CHECK_PROTO_ICMP, OnCheckProtoIcmp)
ON_BN_CLICKED(IDC_CHECK_PROTO_DHCP, OnCheckProtoDhcp)
ON_BN_CLICKED(IDC_CHECK_TCP_STAT, OnCheckTcpStat)
ON_BN_CLICKED(IDC_CHECK_UDP_STAT, OnCheckUdpStat)
ON_BN_CLICKED(IDC_CHECK_IP_STAT, OnCheckIpStat)
ON_BN_CLICKED(IDC_CHECK_ICMP_STAT, OnCheckIcmpStat)
ON_BN_CLICKED(IDC_CHECK_LINK_STAT, OnCheckLinkStat)
ON_BN_CLICKED(IDC_BUTTON_OPEN, OnButtonOpen)
ON_BN_CLICKED(IDC_BUTTON_SAVE, OnButtonSave)
ON_EN_CHANGE(IDC_EDIT_CONFIG_FILE, OnChangeEditConfigFile)
ON_BN_CLICKED(IDC_BUTTON_SAVEAS, OnButtonSaveas)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// GeneralPage message handlers
void GeneralPage::OnCheckProtoAll()
{
CButton *pButton_ProtocolAll= (CButton*)GetDlgItem(IDC_CHECK_PROTO_ALL);
bool o_proto_all = m_proto_all;
if(pButton_ProtocolAll != NULL)
{
if(pButton_ProtocolAll->GetCheck() == BST_CHECKED)
{
// TCP
CButton *pButton_tempProto= (CButton*)GetDlgItem(IDC_CHECK_PROTO_TCP);
pButton_tempProto->SetCheck(TRUE);
pButton_tempProto->EnableWindow(FALSE);
// UDP
pButton_tempProto= (CButton*)GetDlgItem(IDC_CHECK_PROTO_UDP);
pButton_tempProto->SetCheck(TRUE);
pButton_tempProto->EnableWindow(FALSE);
// ICMP
pButton_tempProto= (CButton*)GetDlgItem(IDC_CHECK_PROTO_ICMP);
pButton_tempProto->SetCheck(TRUE);
pButton_tempProto->EnableWindow(FALSE);
// DHCP
pButton_tempProto= (CButton*)GetDlgItem(IDC_CHECK_PROTO_DHCP);
pButton_tempProto->SetCheck(TRUE);
pButton_tempProto->EnableWindow(FALSE);
m_proto_all = true;
m_proto_tcp = true;
m_proto_udp = true;
m_proto_icmp = true;
m_proto_dhcp = true;
}
else
{
// TCP
CButton *pButton_tempProto= (CButton*)GetDlgItem(IDC_CHECK_PROTO_TCP);
pButton_tempProto->SetCheck(FALSE);
pButton_tempProto->EnableWindow(TRUE);
// UDP
pButton_tempProto= (CButton*)GetDlgItem(IDC_CHECK_PROTO_UDP);
pButton_tempProto->SetCheck(FALSE);
pButton_tempProto->EnableWindow(TRUE);
// ICMP
pButton_tempProto= (CButton*)GetDlgItem(IDC_CHECK_PROTO_ICMP);
pButton_tempProto->SetCheck(FALSE);
pButton_tempProto->EnableWindow(TRUE);
// DHCP
pButton_tempProto= (CButton*)GetDlgItem(IDC_CHECK_PROTO_DHCP);
pButton_tempProto->SetCheck(FALSE);
pButton_tempProto->EnableWindow(TRUE);
m_proto_all = false;
m_proto_tcp = false;
m_proto_udp = false;
m_proto_icmp = false;
m_proto_dhcp = false;
}
(o_proto_all != m_proto_all) ? g_save = true : 0;
EnableSaveButton();
}
}
void GeneralPage::OnCheckAllStat()
{
CButton *pButton_ProtocolAll= (CButton*)GetDlgItem(IDC_CHECK_ALL_STAT);
bool o_stats_all = m_stats_all;
if(pButton_ProtocolAll != NULL)
{
if(pButton_ProtocolAll->GetCheck() == BST_CHECKED)
{
// TCP
CButton *pButton_tempProto= (CButton*)GetDlgItem(IDC_CHECK_TCP_STAT);
pButton_tempProto->SetCheck(TRUE);
pButton_tempProto->EnableWindow(FALSE);
// UDP
pButton_tempProto= (CButton*)GetDlgItem(IDC_CHECK_UDP_STAT);
pButton_tempProto->SetCheck(TRUE);
pButton_tempProto->EnableWindow(FALSE);
// IP
pButton_tempProto= (CButton*)GetDlgItem(IDC_CHECK_IP_STAT);
pButton_tempProto->SetCheck(TRUE);
pButton_tempProto->EnableWindow(FALSE);
// ICMP
pButton_tempProto= (CButton*)GetDlgItem(IDC_CHECK_ICMP_STAT);
pButton_tempProto->SetCheck(TRUE);
pButton_tempProto->EnableWindow(FALSE);
// LINK
pButton_tempProto= (CButton*)GetDlgItem(IDC_CHECK_LINK_STAT);
pButton_tempProto->SetCheck(TRUE);
pButton_tempProto->EnableWindow(FALSE);
m_stats_all = true;
m_stats_tcp = true;
m_stats_udp = true;
m_stats_ip = true;
m_stats_icmp = true;
m_stats_link = true;
}
else
{
// TCP
CButton *pButton_tempProto= (CButton*)GetDlgItem(IDC_CHECK_TCP_STAT);
pButton_tempProto->SetCheck(FALSE);
pButton_tempProto->EnableWindow(TRUE);
// UDP
pButton_tempProto= (CButton*)GetDlgItem(IDC_CHECK_UDP_STAT);
pButton_tempProto->SetCheck(FALSE);
pButton_tempProto->EnableWindow(TRUE);
// IP
pButton_tempProto= (CButton*)GetDlgItem(IDC_CHECK_IP_STAT);
pButton_tempProto->SetCheck(FALSE);
pButton_tempProto->EnableWindow(TRUE);
// ICMP
pButton_tempProto= (CButton*)GetDlgItem(IDC_CHECK_ICMP_STAT);
pButton_tempProto->SetCheck(FALSE);
pButton_tempProto->EnableWindow(TRUE);
// LINK
pButton_tempProto = (CButton*)GetDlgItem(IDC_CHECK_LINK_STAT);
pButton_tempProto->SetCheck(FALSE);
pButton_tempProto->EnableWindow(TRUE);
m_stats_all = false;
m_stats_tcp = false;
m_stats_udp = false;
m_stats_ip = false;
m_stats_icmp = false;
m_stats_link = false;
}
(o_stats_all != m_stats_all) ? g_save = true : 0;
EnableSaveButton();
}
}
////////////////////////////////////////////////////////////////////
// Protocol - TCP
//
void GeneralPage::OnCheckProtoTcp()
{
// TODO: Add your control notification handler code here
CButton *pButton_Protocol= (CButton*)GetDlgItem(IDC_CHECK_PROTO_TCP);
bool o_proto_tcp = m_proto_tcp;
if(pButton_Protocol != NULL)
(pButton_Protocol->GetCheck() == BST_CHECKED) ? m_proto_tcp = true : m_proto_tcp = false;
(o_proto_tcp != m_proto_tcp) ? g_save = true : 0;
EnableSaveButton();
}
////////////////////////////////////////////////////////////////////
// Protocol - UDP
//
void GeneralPage::OnCheckProtoUdp()
{
CButton *pButton_Protocol= (CButton*)GetDlgItem(IDC_CHECK_PROTO_UDP);
bool o_proto_udp = m_proto_udp;
if(pButton_Protocol != NULL)
(pButton_Protocol->GetCheck() == BST_CHECKED) ? m_proto_udp = true : m_proto_udp = false;
(o_proto_udp != m_proto_udp) ? g_save = true : 0;
EnableSaveButton();
}
////////////////////////////////////////////////////////////////////
// Protocol - ICMP
//
void GeneralPage::OnCheckProtoIcmp()
{
CButton *pButton_Protocol= (CButton*)GetDlgItem(IDC_CHECK_PROTO_ICMP);
bool o_proto_icmp = m_proto_icmp;
if(pButton_Protocol != NULL)
(pButton_Protocol->GetCheck() == BST_CHECKED) ? m_proto_icmp = true : m_proto_icmp = false;
(o_proto_icmp != m_proto_icmp) ? g_save = true : 0;
EnableSaveButton();
}
////////////////////////////////////////////////////////////////////
// Protocol - DHCP
//
void GeneralPage::OnCheckProtoDhcp()
{
CButton *pButton_Protocol= (CButton*)GetDlgItem(IDC_CHECK_PROTO_DHCP);
bool o_proto_dhcp = m_proto_dhcp;
if(pButton_Protocol != NULL)
(pButton_Protocol->GetCheck() == BST_CHECKED) ? m_proto_dhcp = true : m_proto_dhcp = false;
(o_proto_dhcp != m_proto_dhcp) ? g_save = true : 0;
EnableSaveButton();
}
////////////////////////////////////////////////////////////////////
// Stats - TCP
//
void GeneralPage::OnCheckTcpStat()
{
CButton *pButton_Protocol= (CButton*)GetDlgItem(IDC_CHECK_TCP_STAT);
bool o_stats_tcp = m_stats_tcp;
if(pButton_Protocol != NULL)
(pButton_Protocol->GetCheck() == BST_CHECKED) ? m_stats_tcp = true : m_stats_tcp = false;
(o_stats_tcp != m_stats_tcp) ? g_save = true : 0;
EnableSaveButton();
}
////////////////////////////////////////////////////////////////////
// Stats - UDP
//
void GeneralPage::OnCheckUdpStat()
{
CButton *pButton_Protocol= (CButton*)GetDlgItem(IDC_CHECK_UDP_STAT);
bool o_stats_udp = m_stats_udp;
if(pButton_Protocol != NULL)
(pButton_Protocol->GetCheck() == BST_CHECKED) ? m_stats_udp = true : m_stats_udp = false;
(o_stats_udp != m_stats_udp) ? g_save = true : 0;
EnableSaveButton();
}
////////////////////////////////////////////////////////////////////
// Stats - IP
//
void GeneralPage::OnCheckIpStat()
{
CButton *pButton_Protocol= (CButton*)GetDlgItem(IDC_CHECK_IP_STAT);
bool o_stats_ip = m_stats_ip;
if(pButton_Protocol != NULL)
(pButton_Protocol->GetCheck() == BST_CHECKED) ? m_stats_ip = true : m_stats_ip = false;
(o_stats_ip != m_stats_ip) ? g_save = true : 0;
EnableSaveButton();
}
////////////////////////////////////////////////////////////////////
// Stats - ICMP
//
void GeneralPage::OnCheckIcmpStat()
{
CButton *pButton_Protocol= (CButton*)GetDlgItem(IDC_CHECK_ICMP_STAT);
bool o_stats_icmp = m_stats_icmp;
if(pButton_Protocol != NULL)
(pButton_Protocol->GetCheck() == BST_CHECKED) ? m_stats_icmp = true :m_stats_icmp = false;
(o_stats_icmp != m_stats_icmp) ? g_save = true : 0;
EnableSaveButton();
}
////////////////////////////////////////////////////////////////////
// Stats - Link
//
void GeneralPage::OnCheckLinkStat()
{
CButton *pButton_Protocol= (CButton*)GetDlgItem(IDC_CHECK_LINK_STAT);
bool o_stats_link= m_stats_link;
if(pButton_Protocol != NULL)
(pButton_Protocol->GetCheck() == BST_CHECKED) ? m_stats_link = true : m_stats_link = false;
(o_stats_link != m_stats_link) ? g_save = true : 0;
}
void GeneralPage::OnButtonOpen()
{
CButton *pButton_Open = (CButton*)GetDlgItem(IDC_BUTTON_OPEN);
CStatic *pEdit_ConfigFile = (CStatic*)GetDlgItem(IDC_EDIT_CONFIG_FILE);
static char *filter = "TCP/IP Configuration file (*.tcp)\x00*.tcp;\x00\x00";
char filename[512];
OPENFILENAME ofn;
char *filepart=NULL;
AFX_MANAGE_STATE(AfxGetStaticModuleState());
memset(&ofn,0, sizeof(ofn));
pEdit_ConfigFile->GetWindowText(filename,sizeof(filename));
ofn.lStructSize = sizeof(ofn);
ofn.lpstrFilter = filter;
ofn.lpstrFile = filename;
ofn.nMaxFile = sizeof(filename);
ofn.lpstrTitle = "Open TCP/IP configuration file";
ofn.Flags = OFN_FILEMUSTEXIST|OFN_HIDEREADONLY;
if(GetOpenFileName(&ofn))
{
strcpy(filename,ofn.lpstrFile);
}
else
return;
strcpy(m_ConfigFile,filename);
SetFileName(filename);
strcpy(g_config_source,filename);
ConfigHeaderStruct *cfg_load_header = (ConfigHeaderStruct*)malloc(sizeof(ConfigHeaderStruct));
ConfigSourceStruct *cfg_source = (ConfigSourceStruct*)malloc(sizeof(ConfigSourceStruct));
LoadConfigHeaderData(filename,cfg_load_header);
LoadConfigSourceData(filename,cfg_source);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -