//----------------------------------------------------------------------- // // 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(lParam); Assert(lphi); if (HELPINFO_WINDOW == lphi->iContextType) { ShowContextHelp(static_cast(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; }