//---------------------------------------------------------------------------- // // Copyright (c) 1997-1999 Microsoft Corporation // All rights reserved. // // File Name: // msnwipx.c // // Description: // This file contains the property sheet and page procedures for the // IPX protocol property sheet. // //---------------------------------------------------------------------------- #include "pch.h" #include "resource.h" #define MAX_NETWORKNUMBER_LENGTH 8 static TCHAR *StrIpxDescription; static TCHAR *StrAutoDetect; static TCHAR *StrEthernet_802_2; static TCHAR *StrEthernet_802_3; static TCHAR *StrEthernet_II; static TCHAR *StrEthernetSnap; PROPSHEETHEADER MS_NWIPX_pshead ; PROPSHEETPAGE MS_NWIPX_pspage ; UINT CALLBACK MS_NWIPX_PropertiesPageProc( HWND hwnd, UINT uMsg, LPPROPSHEETPAGE ppsp ); int CALLBACK MS_NWIPX_PropertySheetProc( IN HWND hwndDlg, IN UINT uMsg, IN LPARAM lParam ); INT_PTR CALLBACK MS_NWIPX_PropertiesDlgProc( IN HWND hwnd, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam); //---------------------------------------------------------------------------- // // Function: MS_NWIPX_PropertySheetProc // // Purpose: // // Arguments: // // Returns: // //---------------------------------------------------------------------------- int CALLBACK MS_NWIPX_PropertySheetProc( IN HWND hwndDlg, IN UINT uMsg, IN LPARAM lParam ) { switch( uMsg ) { case PSCB_INITIALIZED: // Process PSCB_INITIALIZED break; case PSCB_PRECREATE: // Process PSCB_PRECREATE break; default: // Unknown message break; } return 0 ; } //---------------------------------------------------------------------------- // // Function: Create_MS_NWIPX_PropertySheet // // Purpose: // // Arguments: // // Returns: // //---------------------------------------------------------------------------- BOOL Create_MS_NWIPX_PropertySheet( HWND hwndParent ) { // Initialize property sheet HEADER data ZeroMemory( &MS_NWIPX_pshead, sizeof( PROPSHEETHEADER ) ) ; MS_NWIPX_pshead.dwSize = sizeof( PROPSHEETHEADER ) ; MS_NWIPX_pshead.dwFlags = PSH_PROPSHEETPAGE | PSH_USECALLBACK | PSH_USEHICON | PSH_NOAPPLYNOW; MS_NWIPX_pshead.hwndParent = hwndParent ; MS_NWIPX_pshead.hInstance = FixedGlobals.hInstance; MS_NWIPX_pshead.pszCaption = g_StrIpxProtocolTitle; MS_NWIPX_pshead.nPages = 1 ; MS_NWIPX_pshead.nStartPage = 0 ; MS_NWIPX_pshead.ppsp = &MS_NWIPX_pspage ; MS_NWIPX_pshead.pfnCallback = MS_NWIPX_PropertySheetProc ; // Zero out property PAGE data ZeroMemory (&MS_NWIPX_pspage, 1 * sizeof( PROPSHEETPAGE) ) ; MS_NWIPX_pspage.dwSize = sizeof( PROPSHEETPAGE ) ; MS_NWIPX_pspage.dwFlags = PSP_USECALLBACK ; MS_NWIPX_pspage.hInstance = FixedGlobals.hInstance; MS_NWIPX_pspage.pszTemplate = MAKEINTRESOURCE(IDD_IPX_CONFIG) ; MS_NWIPX_pspage.pfnDlgProc = MS_NWIPX_PropertiesDlgProc ; MS_NWIPX_pspage.pfnCallback = MS_NWIPX_PropertiesPageProc ; // --------- Create & display property sheet --------- return PropertySheet( &MS_NWIPX_pshead ) ? TRUE : FALSE ; } //---------------------------------------------------------------------------- // // Function: MS_NWIPX_PropertiesPageProc // // Purpose: // // Arguments: // // Returns: // //---------------------------------------------------------------------------- UINT CALLBACK MS_NWIPX_PropertiesPageProc( HWND hwnd, UINT uMsg, LPPROPSHEETPAGE ppsp ) { switch( uMsg ) { case PSPCB_CREATE : return 1 ; case PSPCB_RELEASE : return 0; } return 0 ; } //---------------------------------------------------------------------------- // // Function: MS_NWIPX_PropertiesDlgProc // // Purpose: // // Arguments: // // Returns: // //---------------------------------------------------------------------------- INT_PTR CALLBACK MS_NWIPX_PropertiesDlgProc( IN HWND hwnd, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam) { BOOL bStatus = TRUE; switch( uMsg ) { case WM_INITDIALOG: { HWND hInternalNetworkNumberEditBox = GetDlgItem( hwnd, IDC_EDT_IPXAS_INTERNAL ); HWND hNetworkNumberEditBox = GetDlgItem( hwnd, IDC_EDT_IPXPP_NETWORKNUMBER ); StrIpxDescription = MyLoadString( IDS_IPX_DESCRIPTION ); StrAutoDetect = MyLoadString( IDS_AUTO_DETECT ); StrEthernet_802_2 = MyLoadString( IDS_ETHERNET_802_2 ); StrEthernet_802_3 = MyLoadString( IDS_ETHERNET_802_3 ); StrEthernet_II = MyLoadString( IDS_ETHERNET_II ); StrEthernetSnap = MyLoadString( IDS_ETHERNET_SNAP ); SetWindowText( GetDlgItem( hwnd, IDC_IPXPP_TEXT ), StrIpxDescription ); // // Set the text limit on the edit boxes to MAX_NETWORKNUMBER_LENGTH // SendDlgItemMessage( hwnd, IDC_EDT_IPXAS_INTERNAL, EM_LIMITTEXT, (WPARAM) MAX_NETWORKNUMBER_LENGTH, (LPARAM) 0 ); SendDlgItemMessage( hwnd, IDC_EDT_IPXPP_NETWORKNUMBER, EM_LIMITTEXT, (WPARAM) MAX_NETWORKNUMBER_LENGTH, (LPARAM) 0 ); // // Fill Combo box with initial values // SendDlgItemMessage( hwnd, IDC_CMB_IPXPP_FRAMETYPE, CB_ADDSTRING, (WPARAM) 0, (LPARAM) StrAutoDetect ); SendDlgItemMessage( hwnd, IDC_CMB_IPXPP_FRAMETYPE, CB_ADDSTRING, (WPARAM) 0, (LPARAM) StrEthernet_802_2 ); SendDlgItemMessage( hwnd, IDC_CMB_IPXPP_FRAMETYPE, CB_ADDSTRING, (WPARAM) 0, (LPARAM) StrEthernet_802_3); SendDlgItemMessage( hwnd, IDC_CMB_IPXPP_FRAMETYPE, CB_ADDSTRING, (WPARAM) 0, (LPARAM) StrEthernet_II ); SendDlgItemMessage( hwnd, IDC_CMB_IPXPP_FRAMETYPE, CB_ADDSTRING, (WPARAM) 0, (LPARAM) StrEthernetSnap ); SetWindowText( hInternalNetworkNumberEditBox, NetSettings.szInternalNetworkNumber ); // // Make the default selection in the combo box whatever // NetSettings.szFrameType is // if( lstrcmp( NetSettings.pCurrentAdapter->szFrameType, _T("0xFF") ) == 0 ) { SendDlgItemMessage( hwnd, IDC_CMB_IPXPP_FRAMETYPE, CB_SETCURSEL, (WPARAM) 0, (LPARAM) 0 ); } else if( lstrcmp( NetSettings.pCurrentAdapter->szFrameType, _T("0x2") ) == 0 ) { SendDlgItemMessage( hwnd, IDC_CMB_IPXPP_FRAMETYPE, CB_SETCURSEL, (WPARAM) 1, (LPARAM) 0 ); } else if( lstrcmp( NetSettings.pCurrentAdapter->szFrameType, _T("0x1") ) == 0 ) { SendDlgItemMessage( hwnd, IDC_CMB_IPXPP_FRAMETYPE, CB_SETCURSEL, (WPARAM) 2, (LPARAM) 0 ); } else if( lstrcmp( NetSettings.pCurrentAdapter->szFrameType, _T("0x0") ) == 0 ) { SendDlgItemMessage( hwnd, IDC_CMB_IPXPP_FRAMETYPE, CB_SETCURSEL, (WPARAM) 3, (LPARAM) 0 ); } else if( lstrcmp( NetSettings.pCurrentAdapter->szFrameType, _T("0x3") ) == 0 ) { SendDlgItemMessage( hwnd, IDC_CMB_IPXPP_FRAMETYPE, CB_SETCURSEL, (WPARAM) 4, (LPARAM) 0 ); } if( lstrcmp( NetSettings.pCurrentAdapter->szFrameType, _T("0xFF") ) == 0 ) { EnableWindow( GetDlgItem( hwnd, IDC_STATIC_NETNUM ), FALSE ); EnableWindow( GetDlgItem( hwnd, IDC_EDT_IPXPP_NETWORKNUMBER ), FALSE ); } else { SetWindowText( hInternalNetworkNumberEditBox, NetSettings.szInternalNetworkNumber ); SetWindowText( hNetworkNumberEditBox, NetSettings.pCurrentAdapter->szNetworkNumber ); } break; } case WM_NOTIFY: { LPNMHDR pnmh = (LPNMHDR) lParam; switch( pnmh->code ) { case PSN_APPLY: { TCHAR szFrameTypeBuffer[MAX_STRING_LEN]; // user clicked the OK button on the property sheet HWND hInternalNetworkNumberEditBox = GetDlgItem( hwnd, IDC_EDT_IPXAS_INTERNAL ); HWND hNetworkNumberEditBox = GetDlgItem( hwnd, IDC_EDT_IPXPP_NETWORKNUMBER ); HWND hFrameTypeComboBox = GetDlgItem( hwnd, IDC_CMB_IPXPP_FRAMETYPE ); // 8+1 because only want to take the first 8 characters +1 for the null GetWindowText( hInternalNetworkNumberEditBox, NetSettings.szInternalNetworkNumber, 8+1 ); GetWindowText( hNetworkNumberEditBox, NetSettings.pCurrentAdapter->szNetworkNumber, 8+1 ); // // Map Combo Box names to the appropriate string for the answer file // GetWindowText( hFrameTypeComboBox, szFrameTypeBuffer, MAX_STRING_LEN ); if( lstrcmp( szFrameTypeBuffer, StrAutoDetect ) == 0 ) { lstrcpyn( NetSettings.pCurrentAdapter->szFrameType, _T("0xFF"), AS(NetSettings.pCurrentAdapter->szFrameType) ); } else if( lstrcmp( szFrameTypeBuffer, StrEthernet_802_2 ) == 0 ) { lstrcpyn( NetSettings.pCurrentAdapter->szFrameType, _T("0x2"), AS(NetSettings.pCurrentAdapter->szFrameType) ); } else if( lstrcmp( szFrameTypeBuffer, StrEthernet_802_3 ) == 0 ) { lstrcpyn( NetSettings.pCurrentAdapter->szFrameType, _T("0x1"), AS(NetSettings.pCurrentAdapter->szFrameType) ); } else if( lstrcmp( szFrameTypeBuffer, StrEthernet_II ) == 0 ) { lstrcpyn( NetSettings.pCurrentAdapter->szFrameType, _T("0x0"), AS(NetSettings.pCurrentAdapter->szFrameType) ); } else if( lstrcmp( szFrameTypeBuffer, StrEthernetSnap ) == 0 ) { lstrcpyn( NetSettings.pCurrentAdapter->szFrameType, _T("0x3"), AS(NetSettings.pCurrentAdapter->szFrameType) ); } } } break; } // end case WM_NOTIFY case WM_COMMAND: { WORD wNotifyCode = HIWORD( wParam ) ; WORD wButtonId = LOWORD( wParam ) ; if( wNotifyCode == CBN_SELCHANGE ) { if( wButtonId == IDC_CMB_IPXPP_FRAMETYPE ) { INT_PTR iIndex; HWND hNetworkNumberEditBox = GetDlgItem( hwnd, IDC_EDT_IPXPP_NETWORKNUMBER ); // get the current selection from the combo box iIndex = SendDlgItemMessage( hwnd, IDC_CMB_IPXPP_FRAMETYPE, CB_GETCURSEL, (WPARAM) 0, (LPARAM) 0 ) ; // infer the settings from the index since they they added in a fixed order if( iIndex == 0 ) { // if "Auto Detect" is selected then do not let user edit the Network Number EnableWindow( GetDlgItem( hwnd, IDC_STATIC_NETNUM ), FALSE ); EnableWindow( hNetworkNumberEditBox, FALSE ); SetWindowText( hNetworkNumberEditBox, _T("") ); } else { // else let user edit Network Number EnableWindow( GetDlgItem( hwnd, IDC_STATIC_NETNUM ), TRUE ); EnableWindow( hNetworkNumberEditBox, TRUE ); } } } break; } default: bStatus = FALSE; break; } return bStatus; }