mirror of https://github.com/tongzx/nt5src
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.
225 lines
6.4 KiB
225 lines
6.4 KiB
//-----------------------------------------------------------------------
|
|
//
|
|
// 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;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|