Source code of Windows XP (NT5)
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.
 
 
 
 
 
 

199 lines
6.5 KiB

//-----------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1997.
//
// File: D L G A D D R . H
//
// Contents: CTcpAddrPage declaration
//
// Notes: CTcpAddrPage is the IP Address page
//
// Author: tongl 5 Nov 1997
//-----------------------------------------------------------------------
#pragma once
#include <ncxbase.h>
#include <ncatlps.h>
#include "ipctrl.h"
#include "dlgbkup.h"
class CTcpAddrPage : public CPropSheetPage
{
public:
// Declare the message map
BEGIN_MSG_MAP(CTcpAddrPage)
// Initialize dialog
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
MESSAGE_HANDLER(WM_CONTEXTMENU, OnContextMenu)
MESSAGE_HANDLER(WM_HELP, OnHelp)
// Property page notification message handlers
NOTIFY_CODE_HANDLER(PSN_APPLY, OnApply)
NOTIFY_CODE_HANDLER(PSN_KILLACTIVE, OnKillActive)
NOTIFY_CODE_HANDLER(PSN_SETACTIVE, OnActive)
NOTIFY_CODE_HANDLER(PSN_RESET, OnCancel)
// Control message handlers
// Mesg handler for the DHCP Radio button
COMMAND_ID_HANDLER(IDC_IP_DHCP, OnDhcpButton)
// Mesg handler for the "specify IP address" Radio button
COMMAND_ID_HANDLER(IDC_IP_FIXED, OnFixedButton)
// Mesg handler for the DHCP Radio button
COMMAND_ID_HANDLER(IDC_DNS_DHCP, OnDnsDhcp)
// Mesg handler for the "specify IP address" Radio button
COMMAND_ID_HANDLER(IDC_DNS_FIXED, OnDnsFixed)
// Mesg handler for the "Advanced" push button
COMMAND_ID_HANDLER(IDC_IPADDR_ADVANCED, OnAdvancedButton)
// Notification handlers for the IP address edit boxes
COMMAND_ID_HANDLER(IDC_IPADDR_IP, OnIpAddrIp)
COMMAND_ID_HANDLER(IDC_IPADDR_SUB, OnIpAddrSub)
COMMAND_ID_HANDLER(IDC_IPADDR_GATE, OnIpAddrGateway)
COMMAND_ID_HANDLER(IDC_DNS_PRIMARY, OnDnsPrimary)
COMMAND_ID_HANDLER(IDC_DNS_SECONDARY, OnDnsSecondary)
NOTIFY_CODE_HANDLER(IPN_FIELDCHANGED, OnIpFieldChange)
END_MSG_MAP()
// Constructors/Destructors
CTcpAddrPage(CTcpipcfg * ptcpip, const DWORD * phelpIDs = NULL);
~CTcpAddrPage();
// Interface
public:
// message map functions
LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& fHandled);
LRESULT OnContextMenu(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& fHandled);
LRESULT OnHelp(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& fHandled);
// notify handlers for the property page
LRESULT OnApply(int idCtrl, LPNMHDR pnmh, BOOL& fHandled);
LRESULT OnKillActive(int idCtrl, LPNMHDR pnmh, BOOL& fHandled);
LRESULT OnActive(int idCtrl, LPNMHDR pnmh, BOOL& fHandled);
LRESULT OnCancel(int idCtrl, LPNMHDR pnmh, BOOL& fHandled);
LRESULT OnQueryCancel(int idCtrl, LPNMHDR pnmh, BOOL& fHandled);
// command ID handlers
LRESULT OnDhcpButton(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& fHandled);
LRESULT OnFixedButton(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& fHandled);
LRESULT OnDnsDhcp(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& fHandled);
LRESULT OnDnsFixed(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& fHandled);
LRESULT OnAdvancedButton(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& fHandled);
// notify code hanlders for the IP edit controls
LRESULT OnIpAddrIp(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& fHandled);
LRESULT OnIpAddrSub(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& fHandled);
LRESULT OnIpAddrGateway(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& fHandled);
LRESULT OnDnsPrimary(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& fHandled);
LRESULT OnDnsSecondary(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& fHandled);
LRESULT OnIpFieldChange(int idCtrl, LPNMHDR pnmh, BOOL& fHandled);
friend class CIpSettingsPage;
friend class CTcpDnsPage;
friend class CTcpWinsPage;
friend class CAtmArpcPage;
friend class CTcpOptionsPage;
friend class CTcpRasPage;
// Implementation
private:
// initializes control state and values
void SetInfo();
// update values in m_pAdapterInfo with what's in the controls
void UpdateInfo();
void UpdateAddressList(VSTR * pvstrList,IpControl& ipPrimary,IpControl& ipSecondary);
int DoPropertySheet(ADAPTER_INFO * pAdapterDlg, GLOBAL_INFO * pGlbDlg);
HRESULT HrSetupPropPages(ADAPTER_INFO * pAdapterDlg,
GLOBAL_INFO * pGlbDlg,
HPROPSHEETPAGE ** pahpsp, INT * pcPages);
void EnableGroup(BOOL fEnableDhcp);
void EnableStaticDns(BOOL fUseStaticDns);
void SetSubnetMask();
// Inlines
BOOL IsModified() {return m_fModified;}
void SetModifiedTo(BOOL bState) {m_fModified = bState;}
void PageModified() {
if (!m_fSetInitialValue)
{
m_fModified = TRUE;
PropSheet_Changed(GetParent(), m_hWnd);
}
}
BOOL FAlreadyWarned(tstring strIp)
{
BOOL fRet = FALSE;
VSTR_ITER iterIpBegin = m_vstrWarnedDupIpList.begin();
VSTR_ITER iterIpEnd = m_vstrWarnedDupIpList.end();
VSTR_ITER iterIp = iterIpBegin;
for( ; iterIp != iterIpEnd; iterIp++)
{
if (strIp == **iterIp)
{
fRet = TRUE;
break;
}
}
return fRet;
}
void ShowOrHideBackupPage();
// data members
CTcpipcfg * m_ptcpip;
ConnectionType m_ConnType;
ADAPTER_INFO * m_pAdapterInfo;
const DWORD* m_adwHelpIDs;
BOOL m_fModified;
BOOL m_fPropShtOk;
BOOL m_fPropShtModified;
BOOL m_fLmhostsFileReset;
//IPSec is removed from connection UI
// BOOL m_fIpsecPolicySet;
BOOL m_fSetInitialValue;
BOOL m_fRasNotAdmin;
IpControl m_ipAddress;
IpControl m_ipSubnetMask;
IpControl m_ipDefGateway;
IpControl m_ipDnsPrimary;
IpControl m_ipDnsSecondary;
VSTR m_vstrWarnedDupIpList;
class CIpSettingsPage * m_pIpSettingsPage;
class CTcpDnsPage * m_pTcpDnsPage;
class CTcpWinsPage * m_pTcpWinsPage;
class CAtmArpcPage * m_pAtmArpcPage;
class CTcpOptionsPage * m_pTcpOptionsPage;
class CTcpRasPage * m_pTcpRasPage;
CIpBackUpDlg m_pageBackup;
HPROPSHEETPAGE m_hBackupPage;
};