365 lines
12 KiB
C
365 lines
12 KiB
C
//*************************************************************
|
|
// File name: NAMES.C
|
|
//
|
|
// Description: Profile control panel applet
|
|
// This file contains the source code for
|
|
// "Computer Names" dialog box.
|
|
//
|
|
// Microsoft Confidential
|
|
// Copyright (c) Microsoft Corporation 1992-1994
|
|
// All rights reserved
|
|
//
|
|
//*************************************************************
|
|
#include <windows.h>
|
|
#include "profile.h"
|
|
|
|
|
|
//*************************************************************
|
|
//
|
|
// NamesDlgProc()
|
|
//
|
|
// Purpose: Dialog box procedure
|
|
//
|
|
// Parameters: HWND hDlg - Window handle of dialog box
|
|
// UINT message - Window message
|
|
// WPARAM wParam - WORD parameter
|
|
// LPARAM lParam - LONG parameter
|
|
//
|
|
//
|
|
// Return: (BOOL) TRUE if message was processed
|
|
// FALSE if not
|
|
//
|
|
//*************************************************************
|
|
|
|
INT_PTR CALLBACK NamesDlgProc(HWND hDlg, UINT message,
|
|
WPARAM wParam, LPARAM lParam)
|
|
{
|
|
TCHAR szNewName [MAX_COMPUTER_NAME];
|
|
LPTSTR lpNewName;
|
|
BOOL bEnableAdd;
|
|
|
|
|
|
switch (message)
|
|
{
|
|
case WM_INITDIALOG:
|
|
|
|
//
|
|
// Add the names to the list box.
|
|
//
|
|
|
|
ParseAndAddComputerNames(hDlg, IDD_NAMESLIST, glpList);
|
|
|
|
//
|
|
// Find out if anything was added to the list.
|
|
// If so, then highlight the selected item. Otherwise,
|
|
// disable the delete buttons.
|
|
//
|
|
|
|
if (SendDlgItemMessage (hDlg, IDD_NAMESLIST, LB_GETCOUNT, 0,0)) {
|
|
SendDlgItemMessage (hDlg, IDD_NAMESLIST, LB_SETSEL, 1, lParam);
|
|
} else {
|
|
EnableWindow(GetDlgItem(hDlg, IDD_DELETE), FALSE);
|
|
EnableWindow(GetDlgItem(hDlg, IDD_CLEARALL), FALSE);
|
|
}
|
|
|
|
//
|
|
// Disable the "Add" button, and free the buffer. It will
|
|
// be created again if the users presses the OK button.
|
|
//
|
|
|
|
EnableWindow (GetDlgItem(hDlg, IDD_ADD), FALSE);
|
|
GlobalFree (glpList);
|
|
|
|
//
|
|
// Post ourselves a message so we can set the focus
|
|
// appropriately.
|
|
//
|
|
|
|
PostMessage (hDlg, WM_USER+1, 0, 0);
|
|
|
|
return TRUE;
|
|
|
|
case WM_USER+1:
|
|
|
|
//
|
|
// Set the focus to the new computer name edit control
|
|
// since most people will be starting from here.
|
|
//
|
|
|
|
SetFocus (GetDlgItem(hDlg, IDD_NEWNAME));
|
|
|
|
break;
|
|
|
|
case WM_COMMAND:
|
|
switch (LOWORD(wParam)) {
|
|
case IDD_NEWNAME:
|
|
|
|
//
|
|
// Enable the Add button if appropriate.
|
|
//
|
|
|
|
if (HIWORD(wParam) == EN_UPDATE) {
|
|
bEnableAdd = GetDlgItemText(hDlg, IDD_NEWNAME,
|
|
szNewName, MAX_COMPUTER_NAME);
|
|
|
|
EnableWindow (GetDlgItem (hDlg, IDD_ADD), bEnableAdd);
|
|
|
|
if (bEnableAdd) {
|
|
SetDefButton (hDlg, IDD_ADD);
|
|
} else {
|
|
SetDefButton (hDlg, IDOK);
|
|
}
|
|
}
|
|
break;
|
|
|
|
case IDD_ADD:
|
|
|
|
//
|
|
// Retrieve the new name from the edit control
|
|
//
|
|
|
|
GetDlgItemText(hDlg, IDD_NEWNAME,
|
|
szNewName, MAX_COMPUTER_NAME);
|
|
|
|
//
|
|
// Check to see if the user entered the new computer
|
|
// name with a \\ infront of it. If so, remove it.
|
|
//
|
|
|
|
lpNewName = szNewName;
|
|
|
|
if ( (szNewName[0] == TEXT('\\')) &&
|
|
(szNewName[1] == TEXT('\\')) ) {
|
|
lpNewName += 2;
|
|
}
|
|
|
|
//
|
|
// Add the new name if it doesn't already exist.
|
|
//
|
|
|
|
if (SendDlgItemMessage (hDlg, IDD_NAMESLIST, LB_FINDSTRINGEXACT,
|
|
0, (LPARAM) lpNewName) == LB_ERR) {
|
|
SendDlgItemMessage (hDlg, IDD_NAMESLIST, LB_ADDSTRING,
|
|
0, (LPARAM) lpNewName);
|
|
}
|
|
|
|
//
|
|
// Erase the contents of the edit control, and set the
|
|
// focus back to the edit control for quick entry of
|
|
// names.
|
|
//
|
|
|
|
SetWindowText (GetDlgItem(hDlg, IDD_NEWNAME), NULL);
|
|
SetFocus (GetDlgItem(hDlg, IDD_NEWNAME));
|
|
SetDefButton (hDlg, IDOK);
|
|
|
|
//
|
|
// Enable the delete buttons.
|
|
//
|
|
|
|
EnableWindow (GetDlgItem(hDlg, IDD_DELETE), TRUE);
|
|
EnableWindow (GetDlgItem(hDlg, IDD_CLEARALL), TRUE);
|
|
|
|
break;
|
|
|
|
case IDD_DELETE:
|
|
{
|
|
INT iSel [MAX_NUM_COMPUTERS];
|
|
INT iCount, i;
|
|
|
|
//
|
|
// Retrieve an array of selected items.
|
|
//
|
|
|
|
iCount = (int)SendDlgItemMessage (hDlg, IDD_NAMESLIST, LB_GETSELITEMS,
|
|
MAX_NUM_COMPUTERS, (LPARAM) iSel);
|
|
|
|
if (iCount == LB_ERR) {
|
|
break;
|
|
}
|
|
|
|
//
|
|
// Now loop through the array and delete the items.
|
|
// Note that we have to do this from the bottom up,
|
|
// or the index's would be wrong as items are deleted
|
|
// from the top of the list.
|
|
//
|
|
|
|
for (i = iCount-1; i >= 0; i--) {
|
|
SendDlgItemMessage (hDlg, IDD_NAMESLIST, LB_DELETESTRING,
|
|
iSel[i], 0);
|
|
}
|
|
|
|
//
|
|
// Find out if anything is left in the list.
|
|
// If not, then disable the delete buttons.
|
|
//
|
|
|
|
if (!SendDlgItemMessage (hDlg, IDD_NAMESLIST,
|
|
LB_GETCOUNT, 0,0)) {
|
|
EnableWindow(GetDlgItem(hDlg, IDD_DELETE), FALSE);
|
|
EnableWindow(GetDlgItem(hDlg, IDD_CLEARALL), FALSE);
|
|
}
|
|
|
|
}
|
|
break;
|
|
|
|
case IDD_CLEARALL:
|
|
|
|
//
|
|
// User requested to empty the entire list.
|
|
//
|
|
|
|
SendDlgItemMessage (hDlg, IDD_NAMESLIST, LB_RESETCONTENT,
|
|
0, 0);
|
|
|
|
EnableWindow(GetDlgItem(hDlg, IDD_DELETE), FALSE);
|
|
EnableWindow(GetDlgItem(hDlg, IDD_CLEARALL), FALSE);
|
|
|
|
break;
|
|
|
|
case IDOK:
|
|
{
|
|
BOOL bFound;
|
|
TCHAR szProfile[MAX_ERROR_MSG];
|
|
TCHAR szErrorMsg [MAX_ERROR_MSG];
|
|
|
|
//
|
|
// Make sure the user doesn't still have a name
|
|
// in the "New Name" field that he forgot to "add"
|
|
//
|
|
|
|
if (GetDlgItemText(hDlg, IDD_NEWNAME,
|
|
szNewName, MAX_COMPUTER_NAME)) {
|
|
LoadString (hInstance, IDS_NAME, szProfile, MAX_ERROR_MSG);
|
|
LoadString (hInstance, IDS_ADDNAME, szErrorMsg, MAX_ERROR_MSG);
|
|
|
|
if (MessageBox (hDlg, szErrorMsg, szProfile,
|
|
MB_YESNO | MB_ICONQUESTION) == IDYES) {
|
|
|
|
//
|
|
// User would like to add the name before leaving.
|
|
// Check to see if the user entered the new computer
|
|
// name with a \\ infront of it. If so, remove it.
|
|
//
|
|
|
|
lpNewName = szNewName;
|
|
|
|
if ( (szNewName[0] == TEXT('\\')) &&
|
|
(szNewName[1] == TEXT('\\')) ) {
|
|
lpNewName += 2;
|
|
}
|
|
|
|
//
|
|
// Check for duplicates first, then add the name
|
|
// if it doesn't exist.
|
|
//
|
|
|
|
if (SendDlgItemMessage (hDlg, IDD_NAMESLIST,
|
|
LB_FINDSTRINGEXACT,
|
|
0,
|
|
(LPARAM) lpNewName) == LB_ERR) {
|
|
SendDlgItemMessage (hDlg, IDD_NAMESLIST,
|
|
LB_ADDSTRING,
|
|
0,
|
|
(LPARAM) lpNewName);
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
//
|
|
// Create the list of names to be passed back.
|
|
//
|
|
|
|
glpList = CreateList (hDlg, IDD_NAMESLIST, NULL, &bFound);
|
|
|
|
EndDialog(hDlg, TRUE);
|
|
return TRUE;
|
|
}
|
|
|
|
case IDCANCEL:
|
|
|
|
//
|
|
// Close the dialog box.
|
|
//
|
|
|
|
EndDialog(hDlg, FALSE);
|
|
return TRUE;
|
|
|
|
case IDD_NAMESHELP:
|
|
|
|
//
|
|
// User requested help
|
|
//
|
|
|
|
WinHelp (hDlg, szHelpFileName, HELP_CONTEXT,
|
|
NAMES_HELP_CONTEXT);
|
|
break;
|
|
|
|
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
|
|
default:
|
|
|
|
//
|
|
// User requested help via the F1 key.
|
|
//
|
|
|
|
if (message == uiShellHelp) {
|
|
WinHelp (hDlg, szHelpFileName, HELP_CONTENTS, 0);
|
|
}
|
|
break;
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
//*************************************************************
|
|
//
|
|
// SetDefButton()
|
|
//
|
|
// Purpose: Sets the default button
|
|
//
|
|
// Parameters: HWND hDlg - Window handle of dialog box
|
|
// INT idButton - ID of button
|
|
//
|
|
// Return: void
|
|
//
|
|
//*************************************************************
|
|
|
|
void SetDefButton(HWND hwndDlg, INT idButton)
|
|
{
|
|
LRESULT lr;
|
|
|
|
if (HIWORD(lr = SendMessage(hwndDlg, DM_GETDEFID, 0, 0)) == DC_HASDEFID)
|
|
{
|
|
HWND hwndOldDefButton = GetDlgItem(hwndDlg, LOWORD(lr));
|
|
|
|
//
|
|
// If we are setting the default button to the button which is
|
|
// already default, then exit now.
|
|
//
|
|
|
|
if (LOWORD(lr) == idButton) {
|
|
return;
|
|
}
|
|
|
|
SendMessage (hwndOldDefButton,
|
|
BM_SETSTYLE,
|
|
MAKEWPARAM(BS_PUSHBUTTON, 0),
|
|
MAKELPARAM(TRUE, 0));
|
|
}
|
|
|
|
SendMessage( hwndDlg, DM_SETDEFID, idButton, 0L );
|
|
SendMessage( GetDlgItem(hwndDlg, idButton),
|
|
BM_SETSTYLE,
|
|
MAKEWPARAM( BS_DEFPUSHBUTTON, 0 ),
|
|
MAKELPARAM( TRUE, 0 ));
|
|
}
|