//---------------------------------------------------------------------------- // // Copyright (c) 1997-1999 Microsoft Corporation // All rights reserved. // // File Name: // msclient.c // // Description: // // //---------------------------------------------------------------------------- #include "pch.h" #include "resource.h" static TCHAR *StrWindowsNtLocator; static TCHAR *StrDceDirectoryService; PROPSHEETHEADER MSClient_pshead ; PROPSHEETPAGE MSClient_pspage ; UINT CALLBACK MSClient_PropertiesPageProc (HWND hwnd, UINT uMsg, LPPROPSHEETPAGE ppsp); INT_PTR CALLBACK MSClient_PropertiesDlgProc( IN HWND hwnd, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam); //---------------------------------------------------------------------------- // // Function: MSClient_PropertySheetProc // // Purpose: // //---------------------------------------------------------------------------- int CALLBACK MSClient_PropertySheetProc(HWND hwndDlg, UINT uMsg, 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_MSClient_PropertySheet // // Purpose: // //---------------------------------------------------------------------------- BOOL Create_MSClient_PropertySheet(HWND hwndParent) { // Initialize property sheet HEADER data ZeroMemory(&MSClient_pshead, sizeof (PROPSHEETHEADER)); MSClient_pshead.dwSize = sizeof (PROPSHEETHEADER); MSClient_pshead.dwFlags = PSH_PROPSHEETPAGE | PSH_USECALLBACK | PSH_USEHICON | PSH_NOAPPLYNOW; MSClient_pshead.hwndParent = hwndParent; MSClient_pshead.hInstance = FixedGlobals.hInstance; MSClient_pshead.pszCaption = g_StrMsClientTitle; MSClient_pshead.nPages = 1; MSClient_pshead.nStartPage = 0; MSClient_pshead.ppsp = &MSClient_pspage; MSClient_pshead.pfnCallback = MSClient_PropertySheetProc; // Zero out property PAGE data ZeroMemory(&MSClient_pspage, 1 * sizeof (PROPSHEETPAGE)); MSClient_pspage.dwSize = sizeof (PROPSHEETPAGE); MSClient_pspage.dwFlags = PSP_USECALLBACK; MSClient_pspage.hInstance = FixedGlobals.hInstance; MSClient_pspage.pszTemplate = MAKEINTRESOURCE(IDD_DLG_RPCCONFIG); MSClient_pspage.pfnDlgProc = MSClient_PropertiesDlgProc; MSClient_pspage.pfnCallback = MSClient_PropertiesPageProc; // --------- Create & display property sheet --------- return( PropertySheet(&MSClient_pshead) ? TRUE : FALSE ); } //---------------------------------------------------------------------------- // // Function: MSClient_PropertiesPageProc // // Purpose: // //---------------------------------------------------------------------------- UINT CALLBACK MSClient_PropertiesPageProc (HWND hwnd, UINT uMsg, LPPROPSHEETPAGE ppsp) { switch (uMsg) { case PSPCB_CREATE : return 1 ; case PSPCB_RELEASE : return 0; } return 0 ; } //---------------------------------------------------------------------------- // // Function: OnMsClientInitDialog // // Purpose: // // Arguments: IN HWND hwnd - handle to the dialog // // Returns: VOID // //---------------------------------------------------------------------------- static VOID OnMsClientInitDialog( IN HWND hwnd ) { INT iIndex; BOOL bGreyNetworkAddress; // // Load strings from resources // StrWindowsNtLocator = MyLoadString( IDS_WINDOWS_NT_LOCATOR ); StrDceDirectoryService = MyLoadString( IDS_DCE_DIR_SERVICE ); // // Fill Combo box with initial values // SendDlgItemMessage( hwnd, IDC_CMB_NAMESERVICE, CB_ADDSTRING, (WPARAM) 0, (LPARAM) StrWindowsNtLocator ); SendDlgItemMessage( hwnd, IDC_CMB_NAMESERVICE, CB_ADDSTRING, (WPARAM) 0, (LPARAM) StrDceDirectoryService ); if( NetSettings.NameServiceProvider == MS_CLIENT_WINDOWS_LOCATOR ) { iIndex = 0; bGreyNetworkAddress = FALSE; } else if( NetSettings.NameServiceProvider == MS_CLIENT_DCE_CELL_DIR_SERVICE ) { iIndex = 1; SetWindowText( GetDlgItem( hwnd, IDC_EDT_NETADDRESS ), NetSettings.szNetworkAddress ); bGreyNetworkAddress = TRUE; } else { AssertMsg( FALSE, "Invalid case for NameServiceProvider" ); iIndex = 0; bGreyNetworkAddress = FALSE; } SendDlgItemMessage( hwnd, IDC_CMB_NAMESERVICE, CB_SETCURSEL, (WPARAM) iIndex, (LPARAM) 0 ); EnableWindow( GetDlgItem( hwnd, IDC_EDT_NETADDRESS ), bGreyNetworkAddress ); } //---------------------------------------------------------------------------- // // Function: OnSelChangeNameServiceProvider // // Purpose: // // Arguments: IN HWND hwnd - handle to the dialog // // Returns: VOID // //---------------------------------------------------------------------------- static VOID OnSelChangeNameServiceProvider( IN HWND hwnd ) { INT_PTR iIndex; HWND hNetworkAddressEditBox = GetDlgItem( hwnd, IDC_EDT_NETADDRESS ); // // get the current selection from the combo box // iIndex = SendDlgItemMessage( hwnd, IDC_CMB_NAMESERVICE, CB_GETCURSEL, (WPARAM) 0, (LPARAM) 0 ); // infer the settings from the index since there are only 2 to work from if(iIndex == 0) { // if "Windows NT Locator" is selected then do not let user edit the Network address EnableWindow(hNetworkAddressEditBox, FALSE); } else { // else DCE Cell Directory Service is selected so let user edit Network address EnableWindow(hNetworkAddressEditBox, TRUE); } } //---------------------------------------------------------------------------- // // Function: OnMsClientApply // // Purpose: // // Arguments: IN HWND hwnd - handle to the dialog // // Returns: VOID // //---------------------------------------------------------------------------- static VOID OnMsClientApply( IN HWND hwnd ) { INT_PTR iIndex; iIndex = SendDlgItemMessage( hwnd, IDC_CMB_NAMESERVICE, CB_GETCURSEL, (WPARAM) 0, (LPARAM) 0 ); if( iIndex == 0 ) { NetSettings.NameServiceProvider = MS_CLIENT_WINDOWS_LOCATOR; } else if( iIndex == 1 ) { NetSettings.NameServiceProvider = MS_CLIENT_DCE_CELL_DIR_SERVICE; } else { AssertMsg( FALSE, "Invalid result from Network Service Provider combo box." ); NetSettings.NameServiceProvider = MS_CLIENT_WINDOWS_LOCATOR; } GetWindowText( GetDlgItem( hwnd, IDC_EDT_NETADDRESS ), NetSettings.szNetworkAddress, MAX_NETWORK_ADDRESS_LENGTH + 1 ); } //---------------------------------------------------------------------------- // // Function: MSClient_PropertiesDlgProc // // Purpose: // //---------------------------------------------------------------------------- INT_PTR CALLBACK MSClient_PropertiesDlgProc( IN HWND hwnd, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam) { BOOL bStatus = TRUE; switch (uMsg) { case WM_INITDIALOG: OnMsClientInitDialog( hwnd ); break; case WM_NOTIFY: { LPNMHDR pnmh = (LPNMHDR) lParam; switch( pnmh->code ) { case PSN_APPLY: OnMsClientApply( hwnd ); break; } break; } // end case WM_NOTIFY case WM_COMMAND: { WORD wNotifyCode = HIWORD (wParam); WORD wButtonId = LOWORD (wParam); if(wNotifyCode == CBN_SELCHANGE) { if(wButtonId == IDC_CMB_NAMESERVICE) { OnSelChangeNameServiceProvider( hwnd ); } } } break; default: bStatus = FALSE; break; } return( bStatus ); }