mirror of https://github.com/lianthony/NT4.0
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
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 );
|
|
}
|