📄 networkifce1.cpp
字号:
// NetworkIfce1.cpp : implementation file
//
#include "stdafx.h"
#include "TCPIPplugin.h"
#include "NetworkIfce1.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
void ConvertBinaryMacToText(const char *bmac, char *tm);
void ConvertTextMacToBinary(const char *tm, char *bm);
bool g_EnableNI1Page;
extern bool g_save;
/////////////////////////////////////////////////////////////////////////////
// NetworkIfce1 property page
IMPLEMENT_DYNCREATE(NetworkIfce1, CPropertyPage)
NetworkIfce1::NetworkIfce1() : CPropertyPage(NetworkIfce1::IDD)
{
//{{AFX_DATA_INIT(NetworkIfce1)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
InitNWIfce1DefaultSettings();
}
NetworkIfce1::~NetworkIfce1()
{
}
void NetworkIfce1::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(NetworkIfce1)
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
PopulateNWIfce1Settings();
}
BEGIN_MESSAGE_MAP(NetworkIfce1, CPropertyPage)
//{{AFX_MSG_MAP(NetworkIfce1)
ON_BN_CLICKED(IDC_NIC1_CHECK_DHCP, OnNic1CheckDhcp)
ON_NOTIFY(IPN_FIELDCHANGED, IDC_NIC1_IPADDRESS, OnFieldchangedNic1Ipaddress)
ON_NOTIFY(IPN_FIELDCHANGED, IDC_NIC1_IPADDRESS_SUBNET_MASK, OnFieldchangedNic1IpaddressSubnetMask)
ON_NOTIFY(IPN_FIELDCHANGED, IDC_NIC1_IPADDRESS_GATEWAY, OnFieldchangedNic1IpaddressGateway)
ON_EN_CHANGE(IDC_NIC1_MAC_ADDRESS, OnChangeNic1MacAddress)
ON_EN_CHANGE(IDC_EDIT_NIC1_RCV_BUFS, OnChangeEditNic1RcvBufs)
ON_EN_CHANGE(IDC_EDIT_NIC1_RCV_SIZE, OnChangeEditNic1RcvSize)
ON_EN_CHANGE(IDC_EDIT_NIC1_XMIT_BUFS, OnChangeEditNic1XmitBufs)
ON_EN_CHANGE(IDC_EDIT_NIC1_XMIT_SIZE, OnChangeEditNic1XmitSize)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// NetworkIfce1 message handlers
void NetworkIfce1::OnNic1CheckDhcp()
{
CButton *pButton_DHCP= (CButton*)GetDlgItem(IDC_NIC1_CHECK_DHCP);
bool o_use_dhcp = m_use_dhcp;
if(pButton_DHCP != NULL)
{
if(pButton_DHCP->GetCheck() == BST_CHECKED)
{
m_use_dhcp = true;
// DHCP Enabled so diable IP/Subnet Mask/ Gateway boxes
//
CIPAddressCtrl *pIpAddress = (CIPAddressCtrl*)GetDlgItem(IDC_NIC1_IPADDRESS);
pIpAddress->EnableWindow(FALSE);
// Subnet mask
CIPAddressCtrl *pSubNetMask= (CIPAddressCtrl*)GetDlgItem(IDC_NIC1_IPADDRESS_SUBNET_MASK);
pSubNetMask->EnableWindow(FALSE);
// Gateway
CIPAddressCtrl *pGateway= (CIPAddressCtrl*)GetDlgItem(IDC_NIC1_IPADDRESS_GATEWAY);
pGateway->EnableWindow(FALSE);
}
else
{
m_use_dhcp = false;
// DHCP Enabled so Enable IP/Subnet Mask/ Gateway boxes
//
CIPAddressCtrl *pIpAddress = (CIPAddressCtrl*)GetDlgItem(IDC_NIC1_IPADDRESS);
pIpAddress->EnableWindow(TRUE);
// Subnet mask
CIPAddressCtrl *pSubNetMask= (CIPAddressCtrl*)GetDlgItem(IDC_NIC1_IPADDRESS_SUBNET_MASK);
pSubNetMask->EnableWindow(TRUE);
// Gateway
CIPAddressCtrl *pGateway= (CIPAddressCtrl*)GetDlgItem(IDC_NIC1_IPADDRESS_GATEWAY);
pGateway->EnableWindow(TRUE);
}
(o_use_dhcp != m_use_dhcp ) ? g_save = true : 0;
}
}
void NetworkIfce1::OnFieldchangedNic1Ipaddress(NMHDR* pNMHDR, LRESULT* pResult)
{
CIPAddressCtrl *pIpAddress = (CIPAddressCtrl*)GetDlgItem(IDC_NIC1_IPADDRESS);
DWORD ip_addr;
DWORD o_ip_addr = m_ip_addr;
if(pIpAddress != NULL)
{
if(pIpAddress->GetAddress(ip_addr) == 4)
{
pIpAddress->GetAddress(m_ip_addr);
if((pIpAddress->IsWindowEnabled()) && (m_ip_addr == 0) && (m_ip_addr != o_ip_addr))
{
AfxMessageBox("Invalid IP Address",MB_ICONEXCLAMATION | MB_ICONWARNING | MB_OK);
pIpAddress->SetFocus();
return;
}
(o_ip_addr != m_ip_addr) ? g_save = true: 0;
}
}
*pResult = 0;
}
void NetworkIfce1::OnFieldchangedNic1IpaddressSubnetMask(NMHDR* pNMHDR, LRESULT* pResult)
{
CIPAddressCtrl *pIpAddress = (CIPAddressCtrl*)GetDlgItem(IDC_NIC1_IPADDRESS_SUBNET_MASK);
DWORD subnet_mask;
DWORD o_subnet_mask = m_subnet_mask;
if(pIpAddress != NULL)
{
if(pIpAddress->GetAddress(subnet_mask) == 4)
{
pIpAddress->GetAddress(m_subnet_mask);
if((pIpAddress->IsWindowEnabled()) && (m_subnet_mask == 0) && (m_subnet_mask!=o_subnet_mask))
{
AfxMessageBox("Invalid Subnet Mask",MB_ICONEXCLAMATION | MB_ICONWARNING | MB_OK);
pIpAddress->SetFocus();
return;
}
(o_subnet_mask != m_subnet_mask) ? g_save = true: 0;
}
}
*pResult = 0;
}
void NetworkIfce1::OnFieldchangedNic1IpaddressGateway(NMHDR* pNMHDR, LRESULT* pResult)
{
CIPAddressCtrl *pIpAddress = (CIPAddressCtrl*)GetDlgItem(IDC_NIC1_IPADDRESS_GATEWAY);
DWORD gateway;
DWORD o_gateway = m_gateway;
if(pIpAddress != NULL)
{
if(pIpAddress->GetAddress(gateway) == 4)
{
pIpAddress->GetAddress(m_gateway);
if( (pIpAddress->IsWindowEnabled()) && (m_gateway == 0) && (m_gateway != o_gateway))
{
AfxMessageBox("Invalid Gateway Address",MB_ICONEXCLAMATION | MB_ICONWARNING | MB_OK);
pIpAddress->SetFocus();
return;
}
(o_gateway != m_gateway) ? g_save = true: 0;
}
}
*pResult = 0;
}
void NetworkIfce1::OnChangeNic1MacAddress()
{
CEdit *pEditBT_MacAddress = (CEdit*)GetDlgItem(IDC_NIC1_MAC_ADDRESS);
char tbuf[80],ubuf[80];
char o_mac_addr[32];
char *ch;
int nc=0;
int st,nd;
strcpy(o_mac_addr,m_mac_addr);
if(pEditBT_MacAddress != NULL)
{
pEditBT_MacAddress->GetWindowText(tbuf,sizeof(tbuf));
pEditBT_MacAddress->GetSel(st,nd);
ch = tbuf;
ubuf[0] = 0;
while (*ch) {
if (('0'<=*ch) && (*ch<='9')) {
ubuf[nc++] = *ch;
} else {
if (('A'<=*ch) && (*ch<='F')) {
ubuf[nc++] = *ch;
} else {
if (('a'<=*ch) && (*ch<='f')) {
ubuf[nc++] = (*ch - 'a' +'A');
}
}
}
ch++;
}
ubuf[nc] = 0;
ubuf[12] = 0;
strcpy(m_mac_addr,ubuf);
if(stricmp(o_mac_addr,m_mac_addr))
g_save = true;
if (strcmp(ubuf,tbuf)!=0) {
pEditBT_MacAddress->SetWindowText(ubuf);
pEditBT_MacAddress->SetSel(st,nd);
}
}
}
void NetworkIfce1::OnChangeEditNic1RcvBufs()
{
CEdit *pEditBT_NumRcvBufs = (CEdit*)GetDlgItem(IDC_EDIT_NIC1_RCV_BUFS);
char temp_buf_arr[80];
char *end_ptr;
int o_num_recv_buffers = m_num_recv_buffers;
if(pEditBT_NumRcvBufs != NULL)
{
pEditBT_NumRcvBufs->GetWindowText(temp_buf_arr,sizeof(temp_buf_arr));
m_num_recv_buffers = strtol(temp_buf_arr,&end_ptr,10);
if(m_num_recv_buffers == 0)
{
AfxMessageBox("Invalid Number of Receive Buffers",MB_ICONEXCLAMATION | MB_ICONWARNING | MB_OK);
pEditBT_NumRcvBufs->SetFocus();
return;
}
(o_num_recv_buffers== m_num_recv_buffers) ? g_save = true : 0;
}
}
void NetworkIfce1::OnChangeEditNic1RcvSize()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CPropertyPage::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
CEdit *pEditBT_RcvBufSize = (CEdit*)GetDlgItem(IDC_EDIT_NIC1_RCV_SIZE);
char temp_buf_arr[80];
char *end_ptr;
int o_recv_buf_size = m_recv_buf_size;
if(pEditBT_RcvBufSize != NULL)
{
pEditBT_RcvBufSize->GetWindowText(temp_buf_arr,sizeof(temp_buf_arr));
m_recv_buf_size = strtol(temp_buf_arr,&end_ptr,10);
if(m_recv_buf_size == 0)
{
AfxMessageBox("Invalid Receive Buffer Size",MB_ICONEXCLAMATION | MB_ICONWARNING | MB_OK);
pEditBT_RcvBufSize->SetFocus();
return;
}
(o_recv_buf_size != m_recv_buf_size) ? g_save = true :0;
}
}
void NetworkIfce1::OnChangeEditNic1XmitBufs()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CPropertyPage::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
CEdit *pEditBT_NumXmitBufs = (CEdit*)GetDlgItem(IDC_EDIT_NIC1_XMIT_BUFS);
char temp_buf_arr[80];
char *end_ptr;
if(pEditBT_NumXmitBufs != NULL)
{
pEditBT_NumXmitBufs->GetWindowText(temp_buf_arr,sizeof(temp_buf_arr));
m_num_xmit_buffers = strtol(temp_buf_arr,&end_ptr,10);
if(m_num_xmit_buffers == 0)
{
AfxMessageBox("Invalid Number of Transmit Buffers",MB_ICONEXCLAMATION | MB_ICONWARNING | MB_OK);
pEditBT_NumXmitBufs->SetFocus();
}
}
}
void NetworkIfce1::OnChangeEditNic1XmitSize()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CPropertyPage::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
CEdit *pEditBT_XmitBufSize = (CEdit*)GetDlgItem(IDC_EDIT_NIC1_XMIT_SIZE);
char temp_buf_arr[80];
char *end_ptr;
int o_xmit_buf_size = m_xmit_buf_size;
if(pEditBT_XmitBufSize != NULL)
{
pEditBT_XmitBufSize->GetWindowText(temp_buf_arr,sizeof(temp_buf_arr));
m_xmit_buf_size = strtol(temp_buf_arr,&end_ptr,10);
if(m_xmit_buf_size == 0)
{
AfxMessageBox("Invalid Transmit Buffer Size",MB_ICONEXCLAMATION | MB_ICONWARNING | MB_OK);
pEditBT_XmitBufSize->SetFocus();
}
(o_xmit_buf_size != m_xmit_buf_size) ? g_save = true : 0;
}
}
void NetworkIfce1::InitNWIfce1DefaultSettings()
{
m_num_recv_buffers = 60;
m_recv_buf_size = 1600;
m_num_xmit_buffers = 40;
m_xmit_buf_size = 1548;
m_mac_addr[0] = 0;
m_ip_addr = 0x0;
m_subnet_mask = 0x0;
m_gateway = 0x0;
m_use_dhcp = true;
}
void NetworkIfce1::PopulateNWIfce1Settings()
{
CEdit *pEdit;
char temp_buf_arr[80];
// Setup Number of Receive Buffers
//
strcpy(temp_buf_arr,"");
pEdit = (CEdit*)GetDlgItem(IDC_EDIT_NIC1_RCV_BUFS);
if(pEdit != NULL)
{
sprintf(temp_buf_arr,"%d",m_num_recv_buffers);
pEdit->SetWindowText(temp_buf_arr);
}
// Setup Receive Size
//
strcpy(temp_buf_arr,"");
pEdit = (CEdit*)GetDlgItem(IDC_EDIT_NIC1_RCV_SIZE);
if(pEdit != NULL)
{
sprintf(temp_buf_arr,"%d",m_recv_buf_size);
pEdit->SetWindowText(temp_buf_arr);
}
// Setup Number of Xmit Buffers
//
strcpy(temp_buf_arr,"");
pEdit = (CEdit*)GetDlgItem(IDC_EDIT_NIC1_XMIT_BUFS);
if(pEdit != NULL)
{
sprintf(temp_buf_arr,"%d",m_num_xmit_buffers);
pEdit->SetWindowText(temp_buf_arr);
}
// Setup Xmit Size
//
strcpy(temp_buf_arr,"");
pEdit = (CEdit*)GetDlgItem(IDC_EDIT_NIC1_XMIT_SIZE);
if(pEdit != NULL)
{
sprintf(temp_buf_arr,"%d",m_xmit_buf_size);
pEdit->SetWindowText(temp_buf_arr);
}
strcpy(temp_buf_arr,"");
pEdit = (CEdit*)GetDlgItem(IDC_NIC1_MAC_ADDRESS);
if(pEdit != NULL)
{
pEdit->SetWindowText(m_mac_addr);
}
// Setup network settings
if(m_use_dhcp == true)
{
CButton *pButton= (CButton*)GetDlgItem(IDC_NIC1_CHECK_DHCP);
pButton->SetCheck(TRUE);
CIPAddressCtrl *pIpAddress = (CIPAddressCtrl*)GetDlgItem(IDC_NIC1_IPADDRESS);
pIpAddress->SetAddress(m_ip_addr);
pIpAddress->EnableWindow(FALSE);
pIpAddress = (CIPAddressCtrl*)GetDlgItem(IDC_NIC1_IPADDRESS_SUBNET_MASK);
pIpAddress->SetAddress(m_subnet_mask);
pIpAddress->EnableWindow(FALSE);
pIpAddress = (CIPAddressCtrl*)GetDlgItem(IDC_NIC1_IPADDRESS_GATEWAY);
pIpAddress->SetAddress(m_gateway);
pIpAddress->EnableWindow(FALSE);
}
else
{
CButton *pButton= (CButton*)GetDlgItem(IDC_NIC1_CHECK_DHCP);
pButton->SetCheck(FALSE);
CIPAddressCtrl *pIpAddress = (CIPAddressCtrl*)GetDlgItem(IDC_NIC1_IPADDRESS);
pIpAddress->SetAddress(m_ip_addr);
pIpAddress->EnableWindow(TRUE);
pIpAddress = (CIPAddressCtrl*)GetDlgItem(IDC_NIC1_IPADDRESS_SUBNET_MASK);
pIpAddress->SetAddress(m_subnet_mask);
pIpAddress->EnableWindow(TRUE);
pIpAddress = (CIPAddressCtrl*)GetDlgItem(IDC_NIC1_IPADDRESS_GATEWAY);
pIpAddress->SetAddress(m_gateway);
pIpAddress->EnableWindow(TRUE);
}
if(g_EnableNI1Page == false)
DisableNI1Entries(FALSE);
else
DisableNI1Entries(TRUE);
}
bool NetworkIfce1::StoreNIfce1SourceData(network_ifce *nw_ifce)
{
nw_ifce->ip_addr = m_ip_addr;
nw_ifce->subnet_mask = m_subnet_mask;
nw_ifce->default_gateway = m_gateway;
nw_ifce->rx_bufs = m_num_recv_buffers;
nw_ifce->rx_buf_sz = m_recv_buf_size;
nw_ifce->tx_bufs = m_num_xmit_buffers;
nw_ifce->tx_buf_sz = m_xmit_buf_size;
ConvertTextMacToBinary(m_mac_addr,nw_ifce->mac_addr);
nw_ifce->use_dhcp = m_use_dhcp;
return true;
}
bool NetworkIfce1::LoadNIfce1SourceData(network_ifce *nw_ifce)
{
m_ip_addr = nw_ifce->ip_addr;
m_subnet_mask = nw_ifce->subnet_mask;
m_gateway = nw_ifce->default_gateway;
m_num_recv_buffers = nw_ifce->rx_bufs;
m_recv_buf_size = nw_ifce->rx_buf_sz;
m_num_xmit_buffers = nw_ifce->tx_bufs;
m_xmit_buf_size = nw_ifce->tx_buf_sz;
if (memcmp(nw_ifce->mac_addr,"\x00\x00\x00\x00\x00\x00",6) == 0) {
m_mac_addr[0] = 0;
} else {
ConvertBinaryMacToText(nw_ifce->mac_addr,m_mac_addr);
}
m_use_dhcp = nw_ifce->use_dhcp;
return true;
}
void NetworkIfce1::DisableNI1Entries(bool state)
{
CEdit *pEdit;
CButton *pButton= (CButton*)GetDlgItem(IDC_NIC1_CHECK_DHCP);
pButton->EnableWindow(state);
CIPAddressCtrl *pIpAddress = (CIPAddressCtrl*)GetDlgItem(IDC_NIC1_IPADDRESS);
pIpAddress->SetAddress(m_ip_addr);
(m_use_dhcp == true) ?
pIpAddress->EnableWindow(false) : pIpAddress->EnableWindow(state);
pIpAddress = (CIPAddressCtrl*)GetDlgItem(IDC_NIC1_IPADDRESS_SUBNET_MASK);
pIpAddress->SetAddress(m_subnet_mask);
(m_use_dhcp == true) ?
pIpAddress->EnableWindow(false) : pIpAddress->EnableWindow(state);
pIpAddress = (CIPAddressCtrl*)GetDlgItem(IDC_NIC1_IPADDRESS_GATEWAY);
pIpAddress->SetAddress(m_gateway);
(m_use_dhcp == true) ?
pIpAddress->EnableWindow(false): pIpAddress->EnableWindow(state);
pEdit = (CEdit*)GetDlgItem(IDC_EDIT_NIC1_XMIT_BUFS);
pEdit->EnableWindow(state);
pEdit = (CEdit*)GetDlgItem(IDC_EDIT_NIC1_RCV_BUFS);
pEdit->EnableWindow(state);
pEdit = (CEdit*)GetDlgItem(IDC_NIC1_MAC_ADDRESS);
pEdit->EnableWindow(state);
pEdit = (CEdit*)GetDlgItem(IDC_EDIT_NIC1_RCV_SIZE);
pEdit->EnableWindow(state);
pEdit = (CEdit*)GetDlgItem(IDC_EDIT_NIC1_XMIT_SIZE);
pEdit->EnableWindow(state);
}
void NetworkIfce1::OnCancel()
{
CPropertyPage::OnCancel();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -