windows-nt/Source/XPSP1/NT/net/config/netcfg/tcpipcfg/dlgras.cpp
2020-09-26 16:20:57 +08:00

226 lines
6.4 KiB
C++

//-----------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1997.
//
// File: D L G R A S. C P P
//
// Contents: Implementation for CTcpRasPage
//
// Notes: CTcpRasPage is for setting PPP/SLIP specific parameters
//
// Author: tongl 10 Apr 1998
//-----------------------------------------------------------------------
#include "pch.h"
#pragma hdrstop
#include "tcpipobj.h"
#include "ncstl.h"
#include "resource.h"
#include "tcpconst.h"
#include "tcputil.h"
#include "dlgras.h"
#include "dlgaddr.h"
//
// CTcpRasPage
//
CTcpRasPage::CTcpRasPage( CTcpAddrPage * pTcpAddrPage,
ADAPTER_INFO * pAdapterDlg,
const DWORD * adwHelpIDs )
{
Assert(pTcpAddrPage);
Assert(pAdapterDlg);
m_pParentDlg = pTcpAddrPage;
m_pAdapterInfo = pAdapterDlg;
m_adwHelpIDs = adwHelpIDs;
m_fModified = FALSE;
}
CTcpRasPage::~CTcpRasPage()
{
}
LRESULT CTcpRasPage::OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& fHandled)
{
AssertSz(((CONNECTION_RAS_PPP == m_pParentDlg->m_ConnType)||
(CONNECTION_RAS_SLIP == m_pParentDlg->m_ConnType)||
(CONNECTION_RAS_VPN == m_pParentDlg->m_ConnType)),
"Why bring up the RAS property on a non-RAS connection?");
// Fix bug 381870, If the interface is demand dial, then disable
// the "Use default gateway on the remote network" checkbox
if (m_pAdapterInfo->m_fIsDemandDialInterface)
{
::EnableWindow(GetDlgItem(IDC_STATIC_REMOTE_GATEWAY), FALSE);
::EnableWindow(GetDlgItem(IDC_REMOTE_GATEWAY), FALSE);
}
// Set the "Use default gateway on the remote network" checkbox
CheckDlgButton(IDC_REMOTE_GATEWAY, m_pAdapterInfo->m_fUseRemoteGateway);
if (CONNECTION_RAS_PPP == m_pParentDlg->m_ConnType)
{
::ShowWindow(GetDlgItem(IDC_GRP_SLIP), SW_HIDE);
// if PPP connection, hide "Frame Size" control
::ShowWindow(GetDlgItem(IDC_CMB_FRAME_SIZE), SW_HIDE);
::ShowWindow(GetDlgItem(IDC_STATIC_FRAME_SIZE), SW_HIDE);
}
else if (CONNECTION_RAS_VPN == m_pParentDlg->m_ConnType)
{
//if VPN connection, hide the group box and the "Frame Size" control
::ShowWindow(GetDlgItem(IDC_GRP_PPP), SW_HIDE);
::ShowWindow(GetDlgItem(IDC_GRP_SLIP), SW_HIDE);
::ShowWindow(GetDlgItem(IDC_CHK_USE_COMPRESSION), SW_HIDE);
::ShowWindow(GetDlgItem(IDC_CMB_FRAME_SIZE), SW_HIDE);
::ShowWindow(GetDlgItem(IDC_STATIC_FRAME_SIZE), SW_HIDE);
}
else
{
::ShowWindow(GetDlgItem(IDC_GRP_PPP), SW_HIDE);
// initialize the combo box & show current selection
int idx;
idx = SendDlgItemMessage(IDC_CMB_FRAME_SIZE, CB_ADDSTRING, 0,
(LPARAM)(c_szFrameSize1006));
if (idx != CB_ERR)
{
SendDlgItemMessage(IDC_CMB_FRAME_SIZE, CB_SETITEMDATA,
idx, (LPARAM)c_dwFrameSize1006);
if (1006 == m_pParentDlg->m_pAdapterInfo->m_dwFrameSize)
SendDlgItemMessage(IDC_CMB_FRAME_SIZE, CB_SETCURSEL, idx, 0);
}
idx = SendDlgItemMessage(IDC_CMB_FRAME_SIZE, CB_ADDSTRING, 0,
(LPARAM)(c_szFrameSize1500));
if (idx != CB_ERR)
{
SendDlgItemMessage(IDC_CMB_FRAME_SIZE, CB_SETITEMDATA,
idx, (LPARAM)c_dwFrameSize1500);
if (1500 == m_pParentDlg->m_pAdapterInfo->m_dwFrameSize)
{
SendDlgItemMessage(IDC_CMB_FRAME_SIZE, CB_SETCURSEL, idx, 0);
}
}
}
// initialize the checkbox
CheckDlgButton(IDC_CHK_USE_COMPRESSION,
m_pParentDlg->m_pAdapterInfo->m_fUseIPHeaderCompression);
return 0;
}
LRESULT CTcpRasPage::OnContextMenu(UINT uMsg, WPARAM wParam,
LPARAM lParam, BOOL& fHandled)
{
ShowContextHelp(m_hWnd, HELP_CONTEXTMENU, m_adwHelpIDs);
return 0;
}
LRESULT CTcpRasPage::OnHelp(UINT uMsg, WPARAM wParam,
LPARAM lParam, BOOL& fHandled)
{
LPHELPINFO lphi = reinterpret_cast<LPHELPINFO>(lParam);
Assert(lphi);
if (HELPINFO_WINDOW == lphi->iContextType)
{
ShowContextHelp(static_cast<HWND>(lphi->hItemHandle), HELP_WM_HELP,
m_adwHelpIDs);
}
return 0;
}
// notify handlers for the property page
LRESULT CTcpRasPage::OnKillActive(int idCtrl, LPNMHDR pnmh, BOOL& fHandled)
{
return 0;
}
LRESULT CTcpRasPage::OnActive(int idCtrl, LPNMHDR pnmh, BOOL& fHandled)
{
return 0;
}
LRESULT CTcpRasPage::OnCancel(int idCtrl, LPNMHDR pnmh, BOOL& fHandled)
{
return 0;
}
LRESULT CTcpRasPage::OnApply(int idCtrl, LPNMHDR pnmh, BOOL& fHandled)
{
BOOL nResult = PSNRET_NOERROR;
// update value in second memory
// Add remote gateway stuff
BOOL fUseRemoteGateway = IsDlgButtonChecked(IDC_REMOTE_GATEWAY);
if (fUseRemoteGateway != m_pAdapterInfo->m_fUseRemoteGateway)
{
m_pAdapterInfo->m_fUseRemoteGateway = fUseRemoteGateway;
PageModified();
}
// header compression
BOOL fUseHeaderCompression = IsDlgButtonChecked(IDC_CHK_USE_COMPRESSION);
if (fUseHeaderCompression != m_pAdapterInfo->m_fUseIPHeaderCompression)
{
m_pAdapterInfo->m_fUseIPHeaderCompression = fUseHeaderCompression;
PageModified();
}
// frame size
if (CONNECTION_RAS_SLIP == m_pParentDlg->m_ConnType)
{
int idx = SendDlgItemMessage(IDC_CMB_FRAME_SIZE, CB_GETCURSEL, 0L, 0L);
if (idx != CB_ERR)
{
DWORD dwFrameSize = SendDlgItemMessage(IDC_CMB_FRAME_SIZE,
CB_GETITEMDATA, idx, 0L);
if ((dwFrameSize != CB_ERR) && (dwFrameSize != m_pAdapterInfo->m_dwFrameSize))
{
PageModified();
m_pAdapterInfo->m_dwFrameSize = dwFrameSize;
}
}
}
if (!IsModified())
{
::SetWindowLongPtr(m_hWnd, DWLP_MSGRESULT, nResult);
return nResult;
}
// pass the info back to its parent dialog
m_pParentDlg->m_fPropShtOk = TRUE;
if(!m_pParentDlg->m_fPropShtModified)
m_pParentDlg->m_fPropShtModified = IsModified();
// reset status
SetModifiedTo(FALSE); // this page is no longer modified
::SetWindowLongPtr(m_hWnd, DWLP_MSGRESULT, nResult);
return nResult;
}