|
|
//-----------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1997.
//
// File: D L G A D D R M . H
//
// Contents: Declaration of CAdvIPAddrPage, CAddressDialog and
// CGatewayDialog
//
// Notes: CAdvIPAddrPage is the IP setting page
//
// Author: tongl 5 Nov 1997
//
//-----------------------------------------------------------------------
#pragma once
#include "ipctrl.h"
#include "tcperror.h"
#include <ncxbase.h>
#include <ncatlps.h>
// Number of columns in the IDS_IPADDRESS_TEXT listview
const int c_nColumns = 2;
class CIpSettingsPage : public CPropSheetPage { public:
BEGIN_MSG_MAP(CIpSettingsPage) 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) NOTIFY_CODE_HANDLER(PSN_QUERYCANCEL, OnQueryCancel)
COMMAND_ID_HANDLER(IDC_IPADDR_ADDIP, OnAddIp); COMMAND_ID_HANDLER(IDC_IPADDR_EDITIP, OnEditIp); COMMAND_ID_HANDLER(IDC_IPADDR_REMOVEIP, OnRemoveIp);
COMMAND_ID_HANDLER(IDC_IPADDR_ADDGATE, OnAddGate); COMMAND_ID_HANDLER(IDC_IPADDR_EDITGATE, OnEditGate); COMMAND_ID_HANDLER(IDC_IPADDR_REMOVEGATE, OnRemoveGate);
COMMAND_ID_HANDLER(IDC_AUTO_METRIC, OnAutoMetric)
END_MSG_MAP()
public:
CIpSettingsPage(CTcpAddrPage * pTcpAddrPage, ADAPTER_INFO * pAdapterInfo, const DWORD* pamhidsHelp = NULL); ~CIpSettingsPage();
// Dialog creation overrides
public:
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 OnActive(int idCtrl, LPNMHDR pnmh, BOOL& fHandled); LRESULT OnKillActive(int idCtrl, LPNMHDR pnmh, BOOL& fHandled); LRESULT OnApply(int idCtrl, LPNMHDR pnmh, BOOL& fHandled); LRESULT OnCancel(int idCtrl, LPNMHDR pnmh, BOOL& fHandled); LRESULT OnQueryCancel(int idCtrl, LPNMHDR pnmh, BOOL& fHandled);
LRESULT OnAddIp(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& fHandled); LRESULT OnEditIp(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& fHandled); LRESULT OnRemoveIp(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& fHandled);
LRESULT OnAddGate(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& fHandled); LRESULT OnEditGate(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& fHandled); LRESULT OnRemoveGate(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& fHandled); LRESULT OnAutoMetric(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& fHandled); LRESULT OnUp(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& fHandled); LRESULT OnDown(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& fHandled);
LRESULT OnGatewaySelChange(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& fHandled);
friend class CAddressDialog; friend class CGatewayDialog;
private:
// functions
void SetIpInfo(); void SetIpButtons(); void UpdateIpList();
void SetGatewayInfo(); void SetGatewayButtons(); void UpdateGatewayList();
void EnableIpButtons(BOOL fState);
// Inlines
BOOL IsModified() {return m_fModified;} void SetModifiedTo(BOOL bState) {m_fModified = bState;} void PageModified() { m_fModified = TRUE; PropSheet_Changed(GetParent(), m_hWnd);}
// data members
CTcpAddrPage * m_pParentDlg; ADAPTER_INFO * m_pAdapterInfo; const DWORD * m_adwHelpIDs;
BOOL m_fModified;
// are we adding or editting
BOOL m_fEditState; tstring m_strAdd;
HWND m_hIpListView; // IP/Subnet list view
HWND m_hAddIp; // IP buttons
HWND m_hEditIp; HWND m_hRemoveIp;
HWND m_hGatewayListView; HWND m_hAddGateway; HWND m_hEditGateway; HWND m_hRemoveGateway;
tstring m_strRemovedIpAddress; tstring m_strRemovedSubnetMask; tstring m_strRemovedGateway; UINT m_uiRemovedMetric; };
class CAddressDialog : public CDialogImpl<CAddressDialog> { public:
enum { IDD = IDD_IPADDR_ADV_CHANGEIP };
BEGIN_MSG_MAP(CAddressDialog) MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog); MESSAGE_HANDLER(WM_CONTEXTMENU, OnContextMenu); MESSAGE_HANDLER(WM_HELP, OnHelp); MESSAGE_HANDLER(WM_SETCURSOR, OnSetCursor);
COMMAND_ID_HANDLER(IDOK, OnOk); COMMAND_ID_HANDLER(IDCANCEL, OnCancel);
COMMAND_ID_HANDLER(IDC_IPADDR_ADV_CHANGEIP_IP, OnChangeIp) COMMAND_ID_HANDLER(IDC_IPADDR_ADV_CHANGEIP_SUB, OnChangeSub) NOTIFY_CODE_HANDLER(IPN_FIELDCHANGED, OnIpFieldChange)
END_MSG_MAP() //
public: CAddressDialog( CIpSettingsPage * pDlgAdvanced, const DWORD* pamhidsHelp = NULL, int iIndex = -1); ~CAddressDialog(){};
// Dialog creation overides
public:
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); LRESULT OnSetCursor(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& fHandled);
LRESULT OnOk(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& fHandled); LRESULT OnCancel(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& fHandled);
LRESULT OnChangeIp(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& fHandled); LRESULT OnChangeSub(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& fHandled); LRESULT OnIpFieldChange(int idCtrl, LPNMHDR pnmh, BOOL& fHandled);
// Command Handlers
public: void OnIpChange(); void OnSubnetChange(); void OnEditSetFocus(WORD nId);
public: IpControl m_ipAddress; IpControl m_ipSubnetMask; tstring m_strNewIpAddress; // either the one added, or edited
tstring m_strNewSubnetMask; // either the one added, or edited
private:
// this is the IDOK button, the text of the button changes
// with the context.
HWND m_hButton;
CIpSettingsPage * m_pParentDlg;
const DWORD * m_adwHelpIDs;
int m_iIndex; };
class CGatewayDialog : public CDialogImpl<CGatewayDialog> { public:
enum { IDD = IDD_IPADDR_ADV_CHANGEGATE };
BEGIN_MSG_MAP(CAddressDialog) MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog); MESSAGE_HANDLER(WM_CONTEXTMENU, OnContextMenu); MESSAGE_HANDLER(WM_HELP, OnHelp); MESSAGE_HANDLER(WM_SETCURSOR, OnSetCursor);
COMMAND_ID_HANDLER(IDOK, OnOk); COMMAND_ID_HANDLER(IDCANCEL, OnCancel);
COMMAND_ID_HANDLER(IDC_IPADDR_ADV_CHANGE_GATEWAY, OnGatewayChange); COMMAND_ID_HANDLER(IDC_IPADDR_ADV_CHANGE_METRIC, OnMetricChange); COMMAND_ID_HANDLER(IDC_IPADDR_ADV_CHANGE_AUTOMETRIC, OnAutoMetric) NOTIFY_CODE_HANDLER(IPN_FIELDCHANGED, OnIpFieldChange) END_MSG_MAP()
public: CGatewayDialog( CIpSettingsPage * pDlgAdvanced, const DWORD* pamhidsHelp = NULL, int iIndex = -1); ~CGatewayDialog(){};
public:
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); LRESULT OnSetCursor(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& fHandled);
LRESULT OnOk(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& fHandled); LRESULT OnCancel(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& fHandled);
LRESULT OnGatewayChange(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& fHandled); LRESULT OnMetricChange(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& fHandled); LRESULT OnAutoMetric(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& fHandled); LRESULT OnIpFieldChange(int idCtrl, LPNMHDR pnmh, BOOL& fHandled);
// Dialog creation overides
public: IpControl m_ipGateAddress; tstring m_strNewGate; // either the one added, or edited
UINT m_uiNewMetric;
private:
// this is the IDOK button, the text of the button changes
// with the context.
HWND m_hButton;
CIpSettingsPage * m_pParentDlg;
const DWORD * m_adwHelpIDs;
BOOL m_fValidMetric;
int m_iIndex; };
|