📄 networkifce0.cpp
字号:
// NetworkIfce0.cpp : implementation file
//
#include "stdafx.h"
#include "TCPIPplugin.h"
#include "NetworkIfce0.h"
#include "resource.h"
#include <afxdlgs.h>
#include "ConfigGen.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
// If any property is changed the value will be set to true.
// used in classwizplugin.cpp if user presses ok.
//
void ConvertBinaryMacToText(const char *bmac, char *tm);
void ConvertTextMacToBinary(const char *tm, char *bm);
extern bool g_save;
/////////////////////////////////////////////////////////////////////////////
// NetworkIfce0 property page
IMPLEMENT_DYNCREATE(NetworkIfce0, CPropertyPage)
NetworkIfce0::NetworkIfce0() : CPropertyPage(NetworkIfce0::IDD)
{
//{{AFX_DATA_INIT(NetworkIfce0)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
InitNWIfce0DefaultSettings();
}
NetworkIfce0::~NetworkIfce0()
{
}
void NetworkIfce0::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(NetworkIfce0)
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
PopulateNWIfce0Settings();
}
BEGIN_MESSAGE_MAP(NetworkIfce0, CPropertyPage)
//{{AFX_MSG_MAP(NetworkIfce0)
ON_NOTIFY(IPN_FIELDCHANGED, IDC_IPADDRESS_IP, OnFieldchangedIpaddressIp)
ON_BN_CLICKED(IDC_NIC0_CHECK_DHCP, OnNic0CheckDhcp)
ON_NOTIFY(IPN_FIELDCHANGED, IDC_NIC0_IPADDRESS_SUBNET_MASK, OnFieldchangedNic0IpaddressSubnetMask)
ON_NOTIFY(IPN_FIELDCHANGED, IDC_NIC0_IPADDRESS_GATEWAY, OnFieldchangedNic0IpaddressGateway)
ON_EN_CHANGE(IDC_EDIT_NIC0_RCV_BUFS, OnChangeEditNic0RcvBufs)
ON_EN_CHANGE(IDC_NIC0_RCV_BUF_SIZE, OnChangeNic0RcvBufSize)
ON_EN_CHANGE(IDC_NUM_XMIT_BUFFERS, OnChangeNumXmitBuffers)
ON_EN_CHANGE(IDC_NIC0_XMIT_BUF_SIZE, OnChangeNic0XmitBufSize)
ON_EN_CHANGE(IDC_MAC_ADDRESS, OnChangeMacAddress)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// NetworkIfce0 message handlers
void NetworkIfce0::OnFieldchangedIpaddressIp(NMHDR* pNMHDR, LRESULT* pResult)
{
CIPAddressCtrl *pIpAddress = (CIPAddressCtrl*)GetDlgItem(IDC_IPADDRESS_IP);
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 NetworkIfce0::OnNic0CheckDhcp()
{
CButton *pButton_DHCP= (CButton*)GetDlgItem(IDC_NIC0_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_IPADDRESS_IP);
pIpAddress->EnableWindow(FALSE);
// Subnet mask
CIPAddressCtrl *pSubNetMask= (CIPAddressCtrl*)GetDlgItem(IDC_NIC0_IPADDRESS_SUBNET_MASK);
pSubNetMask->EnableWindow(FALSE);
// Gateway
CIPAddressCtrl *pGateway= (CIPAddressCtrl*)GetDlgItem(IDC_NIC0_IPADDRESS_GATEWAY);
pGateway->EnableWindow(FALSE);
}
else
{
m_use_dhcp = false;
// DHCP Enabled so Enable IP/Subnet Mask/ Gateway boxes
//
CIPAddressCtrl *pIpAddress = (CIPAddressCtrl*)GetDlgItem(IDC_IPADDRESS_IP);
pIpAddress->EnableWindow(TRUE);
// Subnet mask
CIPAddressCtrl *pSubNetMask= (CIPAddressCtrl*)GetDlgItem(IDC_NIC0_IPADDRESS_SUBNET_MASK);
pSubNetMask->EnableWindow(TRUE);
// Gateway
CIPAddressCtrl *pGateway= (CIPAddressCtrl*)GetDlgItem(IDC_NIC0_IPADDRESS_GATEWAY);
pGateway->EnableWindow(TRUE);
}
(o_use_dhcp != m_use_dhcp) ? g_save = true : 0;
}
}
void NetworkIfce0::OnFieldchangedNic0IpaddressSubnetMask(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
CIPAddressCtrl *pIpAddress = (CIPAddressCtrl*)GetDlgItem(IDC_NIC0_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();
}
(o_subnet_mask != m_subnet_mask) ? g_save = true : 0;
}
}
*pResult = 0;
}
void NetworkIfce0::OnFieldchangedNic0IpaddressGateway(NMHDR* pNMHDR, LRESULT* pResult)
{
CIPAddressCtrl *pIpAddress = (CIPAddressCtrl*)GetDlgItem(IDC_NIC0_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();
}
(o_gateway != m_gateway) ? g_save = true : 0;
}
}
*pResult = 0;
}
void NetworkIfce0::OnChangeEditNic0RcvBufs()
{
CEdit *pEditBT_NumRcvBufs = (CEdit*)GetDlgItem(IDC_EDIT_NIC0_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,80);
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();
}
(o_num_recv_buffers != m_num_recv_buffers) ? g_save = true : 0;
}
}
void NetworkIfce0::OnChangeNic0RcvBufSize()
{
CEdit *pEditBT_RcvBufSize = (CEdit*)GetDlgItem(IDC_NIC0_RCV_BUF_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();
}
(o_recv_buf_size != m_recv_buf_size) ? g_save = true : 0;
}
}
void NetworkIfce0::OnChangeNumXmitBuffers()
{
CEdit *pEditBT_NumXmitBufs = (CEdit*)GetDlgItem(IDC_NUM_XMIT_BUFFERS);
char temp_buf_arr[80];
char *end_ptr;
int o_num_xmit_buffers = m_num_xmit_buffers;
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();
}
(o_num_xmit_buffers != m_num_xmit_buffers) ? g_save = true :0;
}
}
void NetworkIfce0::OnChangeNic0XmitBufSize()
{
CEdit *pEditBT_XmitBufSize = (CEdit*)GetDlgItem(IDC_NIC0_XMIT_BUF_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 NetworkIfce0::OnChangeMacAddress()
{
CEdit *pEditBT_MacAddress = (CEdit*)GetDlgItem(IDC_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 NetworkIfce0::InitNWIfce0DefaultSettings()
{
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 NetworkIfce0::PopulateNWIfce0Settings()
{
CEdit *pEdit;
char temp_buf_arr[80];
// Setup Number of Receive Buffers
//
strcpy(temp_buf_arr,"");
pEdit = (CEdit*)GetDlgItem(IDC_EDIT_NIC0_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_NIC0_RCV_BUF_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_NUM_XMIT_BUFFERS);
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_NIC0_XMIT_BUF_SIZE);
if(pEdit != NULL)
{
sprintf(temp_buf_arr,"%d",m_xmit_buf_size);
pEdit->SetWindowText(temp_buf_arr);
}
pEdit = (CEdit*)GetDlgItem(IDC_MAC_ADDRESS);
if(pEdit != NULL)
{
//if(!stricmp(m_mac_addr,"") || (!stricmp(m_mac_addr,"0")) || (!stricmp(m_mac_addr,"0x0")))
// strcpy(m_mac_addr,"000000");
pEdit->SetWindowText(m_mac_addr);
}
// Setup network settings
if(m_use_dhcp == true)
{
CButton *pButton= (CButton*)GetDlgItem(IDC_NIC0_CHECK_DHCP);
pButton->SetCheck(TRUE);
CIPAddressCtrl *pIpAddress = (CIPAddressCtrl*)GetDlgItem(IDC_IPADDRESS_IP);
pIpAddress->SetAddress(m_ip_addr);
pIpAddress->EnableWindow(FALSE);
pIpAddress = (CIPAddressCtrl*)GetDlgItem(IDC_NIC0_IPADDRESS_SUBNET_MASK);
pIpAddress->SetAddress(m_subnet_mask);
pIpAddress->EnableWindow(FALSE);
pIpAddress = (CIPAddressCtrl*)GetDlgItem(IDC_NIC0_IPADDRESS_GATEWAY);
pIpAddress->SetAddress(m_gateway);
pIpAddress->EnableWindow(FALSE);
}
else
{
CButton *pButton= (CButton*)GetDlgItem(IDC_NIC0_CHECK_DHCP);
pButton->SetCheck(FALSE);
CIPAddressCtrl *pIpAddress = (CIPAddressCtrl*)GetDlgItem(IDC_IPADDRESS_IP);
pIpAddress->SetAddress(m_ip_addr);
pIpAddress->EnableWindow(TRUE);
pIpAddress = (CIPAddressCtrl*)GetDlgItem(IDC_NIC0_IPADDRESS_SUBNET_MASK);
pIpAddress->SetAddress(m_subnet_mask);
pIpAddress->EnableWindow(TRUE);
pIpAddress = (CIPAddressCtrl*)GetDlgItem(IDC_NIC0_IPADDRESS_GATEWAY);
pIpAddress->SetAddress(m_gateway);
pIpAddress->EnableWindow(TRUE);
}
}
bool NetworkIfce0::StoreNIfce0SourceData(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 NetworkIfce0::LoadNIfce0SourceData(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 NetworkIfce0::OnCancel()
{
CPropertyPage::OnCancel();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -