windows-nt/Source/XPSP1/NT/base/ntsetup/opktools/setupmgr/net/msclient.c

340 lines
8.7 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
//----------------------------------------------------------------------------
//
// 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 );
}