mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
148 lines
3.5 KiB
148 lines
3.5 KiB
// setmappi.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "winsadmn.h"
|
|
#include "setmappi.h"
|
|
|
|
#ifdef _DEBUG
|
|
#undef THIS_FILE
|
|
static char BASED_CODE THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
#define new DEBUG_NEW
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CSetMappingsFilterDlg dialog
|
|
|
|
CSetMappingsFilterDlg::CSetMappingsFilterDlg(
|
|
PADDRESS_MASK & pMask,
|
|
CWnd* pParent /*=NULL*/)
|
|
: m_pMask(pMask), CDialog(CSetMappingsFilterDlg::IDD, pParent)
|
|
{
|
|
//{{AFX_DATA_INIT(CSetMappingsFilterDlg)
|
|
// NOTE: the ClassWizard will add member initialization here
|
|
//}}AFX_DATA_INIT
|
|
|
|
|
|
}
|
|
|
|
void CSetMappingsFilterDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CSetMappingsFilterDlg)
|
|
DDX_Control(pDX, IDOK, m_button_Ok);
|
|
DDX_Control(pDX, IDC_EDIT_NETBIOSNAME, m_edit_NetBIOSName);
|
|
//}}AFX_DATA_MAP
|
|
|
|
DDX_Control(pDX, IDC_IPA_IPADDRESS, m_ipa_IpAddress);
|
|
}
|
|
|
|
BEGIN_MESSAGE_MAP(CSetMappingsFilterDlg, CDialog)
|
|
//{{AFX_MSG_MAP(CSetMappingsFilterDlg)
|
|
ON_EN_CHANGE(IDC_EDIT_NETBIOSNAME, OnChangeEditNetbiosname)
|
|
//}}AFX_MSG_MAP
|
|
|
|
ON_EN_CHANGE(IDC_IPA_IPADDRESS, OnChangeIpControl)
|
|
|
|
END_MESSAGE_MAP()
|
|
|
|
void CSetMappingsFilterDlg::HandleControlStates()
|
|
{
|
|
CString str;
|
|
m_edit_NetBIOSName.GetWindowText(str);
|
|
theApp.CleanString(str);
|
|
DWORD dwIp;
|
|
BOOL f = m_ipa_IpAddress.GetAddress(&dwIp);
|
|
|
|
m_button_Ok.EnableWindow(!str.IsEmpty() || f);
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CSetMappingsFilterDlg message handlers
|
|
|
|
BOOL CSetMappingsFilterDlg::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
if (m_pMask != NULL)
|
|
{
|
|
//
|
|
// The mask will have been stored as a NETBIOS name
|
|
//
|
|
char sz[256];
|
|
::OemToCharBuff(m_pMask->lpNetBIOSName, sz, ::lstrlen(m_pMask->lpNetBIOSName) + 1);
|
|
|
|
m_edit_NetBIOSName.SetWindowText(sz);
|
|
if (m_pMask->bMask != 0xFF)
|
|
{
|
|
m_ipa_IpAddress.SetMask(m_pMask->lIpMask, m_pMask->bMask);
|
|
}
|
|
else
|
|
{
|
|
m_ipa_IpAddress.ClearAddress();
|
|
}
|
|
}
|
|
|
|
HandleControlStates();
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
void CSetMappingsFilterDlg::OnOK()
|
|
{
|
|
static CString str;
|
|
BOOL fValid = FALSE;
|
|
|
|
m_edit_NetBIOSName.GetWindowText(str);
|
|
theApp.CleanString(str);
|
|
if ((fValid = theApp.IsValidNBMask(str)) == FALSE) {
|
|
fValid = theApp.IsValidDNMask(str);
|
|
}
|
|
// May have been cleaned up in validation,
|
|
// so redisplay it.
|
|
m_edit_NetBIOSName.SetWindowText(str);
|
|
m_edit_NetBIOSName.UpdateWindow();
|
|
if (fValid || str.IsEmpty())
|
|
{
|
|
DWORD dwIp;
|
|
BYTE bMask = m_ipa_IpAddress.GetMask();
|
|
BOOL f = m_ipa_IpAddress.GetAddress(&dwIp);
|
|
|
|
if (m_pMask != NULL)
|
|
{
|
|
delete m_pMask;
|
|
}
|
|
|
|
m_pMask = new ADDRESS_MASK;
|
|
|
|
//
|
|
// Remember that the mask is an OEM name
|
|
//
|
|
char * pch = str.GetBuffer(256);
|
|
CharToOemBuff(pch, pch, 255);
|
|
str.ReleaseBuffer();
|
|
|
|
m_pMask->lpNetBIOSName = (LPCSTR)str;
|
|
m_pMask->lIpMask = dwIp;
|
|
m_pMask->bMask = f ? bMask : 0xFF;
|
|
|
|
CDialog::OnOK();
|
|
}
|
|
else
|
|
{
|
|
theApp.MessageBox(IDS_ERR_INVALID_NETBIOS_MASK);
|
|
m_edit_NetBIOSName.SetSel(0,-1);
|
|
// And stay in the d-box.
|
|
}
|
|
}
|
|
|
|
void CSetMappingsFilterDlg::OnChangeEditNetbiosname()
|
|
{
|
|
HandleControlStates();
|
|
}
|
|
|
|
void CSetMappingsFilterDlg::OnChangeIpControl()
|
|
{
|
|
HandleControlStates();
|
|
}
|