Windows NT 4.0 source code leak
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.
 
 
 
 
 
 

482 lines
12 KiB

/**********************************************************************/
/** Microsoft Windows/NT **/
/** Copyright(c) Microsoft Corp., 1992 **/
/**********************************************************************/
/*
browser.cxx
browser configuration dialog boxes
FILE HISTORY:
terryk 20-Mar-1992 Created
terryk 15-Jan-1992 Removed UIDEBUG statement
terryk 15-Nov-1992 changed it to browser configuration dialog
mikemi 30-Jul-1995 removed BLT and made basic Win32
*/
#include "pch.hxx" // Precompiled header
#pragma hdrstop
const INT MAX_DOMAINNAME_LENGTH = 15;
DEFINE_SLIST_OF( STRLIST )
static IsValidDomainName( const NLS_STR& nls )
{
APIERR err = NERR_Success;
// Check name
err = ::I_MNetNameValidate( NULL, nls.QueryPch(),
NAMETYPE_DOMAIN, 0L );
return err == NERR_Success;
}
/*******************************************************************
NAME: ADD_REMOVE_GROUP::SetButton
SYNOPSIS: Enable or disable the button according to the input and
selection
HISTORY:
terryk 20-Apr-1992 Created
********************************************************************/
static void SetButtons( HWND hwndDlg )
{
HWND hwndEdit;
HWND hwndLV;
HWND hwndAdd;
HWND hwndRemove;
BOOL fEnable;
hwndEdit = GetDlgItem( hwndDlg, IDC_DOMAINNAME );
hwndLV = GetDlgItem( hwndDlg, IDC_LISTVIEW );
hwndAdd = GetDlgItem( hwndDlg, IDC_ADD );
hwndRemove = GetDlgItem( hwndDlg, IDC_REMOVE );
fEnable = ( 0 != GetWindowTextLength( hwndEdit ));
EnableWindow( hwndAdd, fEnable );
fEnable = ( 0 != SendMessage( hwndLV, LB_GETCOUNT, 0, 0 ));
EnableWindow( hwndRemove, fEnable );
}
/*******************************************************************
NAME: BROWSER_CONFIG_DIALOG::BROWSER_CONFIG_DIALOG
SYNOPSIS: constructor for browser configuration dialog
ENTRY: const PWND2HWND & wndOwner - parent window handle
HISTORY:
terryk 15-Nov-1992 Created
********************************************************************/
#define REG_WKS_PATH SZ("System\\CurrentControlSet\\Services\\LanmanWorkstation\\Parameters")
#define REG_BROWSER_PATH SZ("System\\CurrentControlSet\\Services\\Browser\\Parameters")
#define OTHER_DOMAIN SZ("OtherDomains")
#define IS_DOMAIN_MASTER SZ("IsDOmainMaster")
#define MAINTAIN_SERVER_LIST SZ("MaintainServerList")
#define SZ_AUTO SZ("AUTO")
#define SZ_YES SZ("YES")
#define SZ_TRUE SZ("TRUE")
#define SZ_FALSE SZ("FALSE")
/*******************************************************************
NAME: BROWSER_CONFIG_DIALOG::OnOK
SYNOPSIS: save the data into registry if the user hits okay
HISTORY:
terryk 15-Nov-1992 Created
********************************************************************/
static BOOL OnClose( HWND hwndDlg, BOOL fSave )
{
if (fSave)
{
APIERR err;
// save the other domain information
REG_KEY rkLocalMachine( HKEY_LOCAL_MACHINE );
ALIAS_STR nlsWksPath = REG_WKS_PATH;
// Get start type
REG_KEY WksRegKey( rkLocalMachine, nlsWksPath );
if (( err = WksRegKey.QueryError()) != NERR_Success )
{
return FALSE;
}
else
{
HWND hwndLV;
TCHAR pszTemp[256];
STRLIST strlstDomains;
INT nCount;
hwndLV = GetDlgItem( hwndDlg, IDC_LISTVIEW );
nCount = SendMessage( hwndLV, LB_GETCOUNT, 0,0 );
for ( INT i = 0; i < nCount; i++ )
{
NLS_STR* pnlsTemp;
SendMessage( hwndLV, LB_GETTEXT, (WPARAM)i, (LPARAM)pszTemp );
pnlsTemp = new NLS_STR( pszTemp );
strlstDomains.Append( pnlsTemp );
}
WksRegKey.SetValue( OTHER_DOMAIN, &strlstDomains );
}
ALIAS_STR nlsBrowserPath = REG_BROWSER_PATH;
REG_KEY BrowserRegKey( rkLocalMachine, nlsBrowserPath );
if (( err = BrowserRegKey.QueryError()) != NERR_Success )
{
return FALSE;
}
}
EndDialog( hwndDlg, fSave );
return TRUE;
}
//-------------------------------------------------------------------
//
// Function: OnDialogInit
//
// Synopsis: initialization of the dialog
//
// Arguments:
// hwndDlg [in] - handle of Dialog window
//
// Return;
// TRUE - let Windows assign focus to a control
// FALSE - we want to set the focus
//
// Notes:
//
// History:
// April 28, 1995 MikeMi - Created
//
//
//-------------------------------------------------------------------
static BOOL OnDialogInit( HWND hwndDlg )
{
APIERR err;
// limit domain name lengths in edit control
SendMessage( GetDlgItem( hwndDlg, IDC_DOMAINNAME ),
EM_LIMITTEXT,
(WPARAM)MAX_DOMAINNAME_LENGTH, (LPARAM)0 );
// Get the other domain variable
REG_KEY rkLocalMachine( HKEY_LOCAL_MACHINE ) ;
ALIAS_STR nlsWksPath = REG_WKS_PATH;
// Get start type
REG_KEY WksRegKey( rkLocalMachine, nlsWksPath );
if (( err = WksRegKey.QueryError()) != NERR_Success )
{
MessagePopup( hwndDlg,
err,
MB_OK | MB_ICONSTOP,
IDS_POPUPTITLE_ERROR );
EndDialog( hwndDlg, -1 );
}
else
{
STRLIST * pstrlstDomains;
HWND hwndLV;
hwndLV = GetDlgItem( hwndDlg, IDC_LISTVIEW );
if (( err = WksRegKey.QueryValue( OTHER_DOMAIN, &pstrlstDomains ))
== NERR_Success )
{
// the variable exists!
ITER_STRLIST iter(*pstrlstDomains);
NLS_STR *pTemp;
// add each item in the string list into the listbox
while (( pTemp = iter.Next() ) != NULL )
{
SendMessage( hwndLV,
LB_ADDSTRING,
0,
(LPARAM) pTemp->QueryPch() );
}
delete pstrlstDomains;
EnableWindow( hwndLV, TRUE );
}
else
{
EnableWindow( hwndLV, FALSE );
}
}
ALIAS_STR nlsBrowserPath = REG_BROWSER_PATH;
// Get start type
REG_KEY BrowserRegKey( rkLocalMachine, nlsBrowserPath );
if (( err = BrowserRegKey.QueryError()) != NERR_Success )
{
MessagePopup( hwndDlg,
err,
MB_OK | MB_ICONSTOP,
IDS_POPUPTITLE_ERROR );
EndDialog( hwndDlg, -1 );
}
SetButtons( hwndDlg );
return( FALSE ); // we want to set focus
}
//-------------------------------------------------------------------
//
// Function: OnAdd
//
// Synopsis:
//
// Arguments:
// hwndDlg [in] - handle of Dialog window
//
// Return;
// TRUE - let Windows assign focus to a control
// FALSE - we want to set the focus
//
// Notes:
//
// History:
// April 28, 1995 MikeMi - Created
//
//
//-------------------------------------------------------------------
static BOOL OnAdd( HWND hwndDlg )
{
// Add button is pressed. So, added the string to the listbox
// and clear the string control text
INT iPos;
HWND hwndEdit;
HWND hwndLV;
TCHAR pszText[256];
hwndEdit = GetDlgItem( hwndDlg, IDC_DOMAINNAME );
hwndLV = GetDlgItem( hwndDlg, IDC_LISTVIEW );
GetWindowText( hwndEdit, pszText, 255 );
if ( IsValidDomainName( pszText ) )
{
iPos = SendMessage( hwndLV, LB_ADDSTRING, 0, (LPARAM)pszText );
SendMessage( hwndLV, LB_SETCURSEL, (WPARAM)iPos, 0 );
SetWindowText( hwndEdit, L"" );
SetButtons( hwndDlg );
}
else
{
MessagePopup( hwndDlg,
IDS_DOMMGR_INV_DOMAIN_FORMAT,
MB_OK | MB_ICONEXCLAMATION,
IDS_POPUPTITLE_ERROR );
}
SetFocus( hwndEdit );
return( TRUE );
}
//-------------------------------------------------------------------
//
// Function: OnRemove
//
// Synopsis: initialization of the dialog
//
// Arguments:
// hwndDlg [in] - handle of Dialog window
//
// Return;
// TRUE - let Windows assign focus to a control
// FALSE - we want to set the focus
//
// Notes:
//
// History:
// April 28, 1995 MikeMi - Created
//
//
//-------------------------------------------------------------------
static BOOL OnRemove( HWND hwndDlg )
{
INT nSel;
HWND hwndEdit;
HWND hwndLV;
TCHAR pszText[256];
// remove button is pressed. So, remove the current selected item
// and put the item into the sle control
hwndEdit = GetDlgItem( hwndDlg, IDC_DOMAINNAME );
hwndLV = GetDlgItem( hwndDlg, IDC_LISTVIEW );
nSel = SendMessage( hwndLV, LB_GETCURSEL, 0, 0 );
SendMessage( hwndLV, LB_GETTEXT, nSel, (LPARAM)pszText );
SetWindowText( hwndEdit, pszText );
SendMessage( hwndLV, LB_DELETESTRING, nSel, 0 );
SetButtons( hwndDlg );
SetFocus( hwndEdit );
return( TRUE );
}
//-------------------------------------------------------------------
//
// Function: dlgprocBrowser
//
// Synopsis:
//
// Arguments:
// hwndDlg [in] - handle of Dialog window
// uMsg [in] - message
// lParam1 [in] - first message parameter
// lParam2 [in] - second message parameter
//
// Return;
// message dependant
//
// Notes:
//
// History:
// June 19, 1995 MikeMi -
//
//
//-------------------------------------------------------------------
BOOL CALLBACK dlgprocBrowser( HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam )
{
BOOL frt = FALSE;
switch (uMsg)
{
case WM_INITDIALOG:
frt = OnDialogInit( hwndDlg );
break;
case WM_COMMAND:
switch (HIWORD(wParam))
{
case BN_CLICKED:
switch (LOWORD(wParam))
{
case IDC_ADD:
OnAdd( hwndDlg );
break;
case IDC_REMOVE:
OnRemove( hwndDlg );
break;
case IDOK:
case IDCANCEL:
frt = OnClose( hwndDlg, (IDOK == LOWORD(wParam)) );
break;
case IDHELP:
break;
default:
frt = FALSE;
break;
}
break;
case LBN_SELCHANGE:
case EN_CHANGE:
SetButtons( hwndDlg );
break;
default:
frt = FALSE;
break;
}
break;
case WM_CONTEXTMENU:
WinHelp( (HWND)wParam,
PSZ_NETWORKHELP,
HELP_CONTEXTMENU,
(DWORD)(LPVOID)amhidsBrowser );
frt = TRUE;
break;
case WM_HELP:
{
LPHELPINFO lphi;
lphi = (LPHELPINFO)lParam;
if (lphi->iContextType == HELPINFO_WINDOW) // must be for a control
{
WinHelp( (HWND)lphi->hItemHandle,
PSZ_NETWORKHELP,
HELP_WM_HELP,
(DWORD)(LPVOID)amhidsBrowser );
}
}
break;
default:
frt = FALSE;
break;
}
return( frt );
}
//-------------------------------------------------------------------
//
// Function:
//
// Synopsis:
//
// Arguments:
// hwndParent [in] - handle of Dialog window
//
// Return;
//
// Notes:
//
// History:
// June 19, 1995 MikeMi -
//
//
//-------------------------------------------------------------------
BOOL RaiseBrowserDialog( HWND hwndParent )
{
BOOL frt;
frt = DialogBoxParam( g_hinst,
MAKEINTRESOURCE( IDD_BROWSER ),
hwndParent,
dlgprocBrowser,
(LPARAM)NULL );
return( frt );
}