367 lines
8 KiB
C
367 lines
8 KiB
C
|
/*++
|
||
|
|
||
|
Microsoft Confidential
|
||
|
Copyright (c) 1992-1997 Microsoft Corporation
|
||
|
All rights reserved
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
edtenvar.c
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
Implements the Edit Environment Variables dialog of the
|
||
|
System Control Panel Applet
|
||
|
|
||
|
Author:
|
||
|
|
||
|
Scott Hallock (scotthal) 11-Nov-1997
|
||
|
|
||
|
Revision History:
|
||
|
|
||
|
--*/
|
||
|
#include "sysdm.h"
|
||
|
|
||
|
//
|
||
|
// Global Variables
|
||
|
//
|
||
|
UINT g_VarType = INVALID_VAR_TYPE;
|
||
|
UINT g_EditType = INVALID_EDIT_TYPE;
|
||
|
TCHAR g_szVarName[BUFZ];
|
||
|
TCHAR g_szVarValue[BUFZ];
|
||
|
|
||
|
//
|
||
|
// Help IDs
|
||
|
//
|
||
|
DWORD aEditEnvVarsHelpIds[] = {
|
||
|
IDC_ENVVAR_EDIT_NAME_LABEL, (IDH_ENV_EDIT + 0),
|
||
|
IDC_ENVVAR_EDIT_NAME, (IDH_ENV_EDIT + 0),
|
||
|
IDC_ENVVAR_EDIT_VALUE_LABEL, (IDH_ENV_EDIT + 1),
|
||
|
IDC_ENVVAR_EDIT_VALUE, (IDH_ENV_EDIT + 1),
|
||
|
0, 0
|
||
|
};
|
||
|
|
||
|
//
|
||
|
// Function prototypes
|
||
|
//
|
||
|
BOOL
|
||
|
InitEnvVarsEdit(
|
||
|
IN HWND hDlg
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
EnvVarsEditHandleCommand(
|
||
|
IN HWND hDlg,
|
||
|
IN WPARAM wParam,
|
||
|
IN LPARAM lParam
|
||
|
);
|
||
|
|
||
|
//
|
||
|
// Function implementation
|
||
|
//
|
||
|
INT_PTR
|
||
|
APIENTRY
|
||
|
EnvVarsEditDlg(
|
||
|
IN HWND hDlg,
|
||
|
IN UINT uMsg,
|
||
|
IN WPARAM wParam,
|
||
|
IN LPARAM lParam
|
||
|
)
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
Handles messages sent to the New.../Edit... dialog.
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
hDlg -
|
||
|
Supplies the window handle
|
||
|
|
||
|
uMsg -
|
||
|
Supplies the message being sent
|
||
|
|
||
|
wParam -
|
||
|
Supplies message parameter
|
||
|
|
||
|
lParam -
|
||
|
Supplies message parameter
|
||
|
|
||
|
Return Value:
|
||
|
|
||
|
TRUE if message was handled.
|
||
|
FALSE if message was unhandled.
|
||
|
|
||
|
--*/
|
||
|
{
|
||
|
BOOL fInitializing = FALSE;
|
||
|
|
||
|
switch (uMsg) {
|
||
|
case WM_INITDIALOG: {
|
||
|
BOOL fSuccess = FALSE;
|
||
|
|
||
|
fInitializing = TRUE;
|
||
|
|
||
|
fSuccess = InitEnvVarsEdit(hDlg);
|
||
|
if (!fSuccess) {
|
||
|
EndDialog(hDlg, EDIT_ERROR);
|
||
|
} // if
|
||
|
|
||
|
fInitializing = FALSE;
|
||
|
break;
|
||
|
} // case WM_INITDIALOG
|
||
|
|
||
|
case WM_COMMAND:
|
||
|
return EnvVarsEditHandleCommand(hDlg, wParam, lParam);
|
||
|
break;
|
||
|
|
||
|
case WM_HELP: // F1
|
||
|
WinHelp((HWND)((LPHELPINFO) lParam)->hItemHandle, HELP_FILE, HELP_WM_HELP, (DWORD_PTR) (LPSTR) aEditEnvVarsHelpIds);
|
||
|
break;
|
||
|
|
||
|
case WM_CONTEXTMENU: // right mouse click
|
||
|
WinHelp((HWND) wParam, HELP_FILE, HELP_CONTEXTMENU, (DWORD_PTR) (LPSTR) aEditEnvVarsHelpIds);
|
||
|
break;
|
||
|
|
||
|
default:
|
||
|
return(FALSE);
|
||
|
break;
|
||
|
|
||
|
} // switch (uMsg)
|
||
|
|
||
|
return(TRUE);
|
||
|
}
|
||
|
|
||
|
BOOL
|
||
|
InitEnvVarsEdit(
|
||
|
IN HWND hDlg
|
||
|
)
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
Initializes the Edit Environment Variables dialog by placing initial
|
||
|
values into the text editing controls if necessary.
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
hDlg -
|
||
|
Supplies window handle
|
||
|
|
||
|
Return Value:
|
||
|
|
||
|
TRUE if successful
|
||
|
FALSE if an error occurs
|
||
|
|
||
|
--*/
|
||
|
{
|
||
|
TCHAR szCaption[EDIT_ENVVAR_CAPTION_LENGTH];
|
||
|
LRESULT fRetVal = FALSE;
|
||
|
INT nResult = 0;
|
||
|
|
||
|
ASSERT(INVALID_EDIT_TYPE != g_EditType);
|
||
|
ASSERT(INVALID_VAR_TYPE != g_VarType);
|
||
|
|
||
|
__try {
|
||
|
|
||
|
fRetVal = SendMessage(
|
||
|
GetDlgItem(hDlg, IDC_ENVVAR_EDIT_NAME),
|
||
|
EM_LIMITTEXT,
|
||
|
MAX_PATH - 1,
|
||
|
0
|
||
|
);
|
||
|
fRetVal = SendMessage(
|
||
|
GetDlgItem(hDlg, IDC_ENVVAR_EDIT_VALUE),
|
||
|
EM_LIMITTEXT,
|
||
|
MAX_VALUE_LEN - 1,
|
||
|
0
|
||
|
);
|
||
|
|
||
|
switch (g_EditType) {
|
||
|
//
|
||
|
// If this is to be a New.. dialog, we only need to
|
||
|
// load the proper capiton for the variable type
|
||
|
//
|
||
|
case NEW_VAR:
|
||
|
|
||
|
switch (g_VarType) {
|
||
|
case SYSTEM_VAR:
|
||
|
nResult = LoadString(
|
||
|
hInstance,
|
||
|
IDS_NEW_SYSVAR_CAPTION,
|
||
|
szCaption,
|
||
|
EDIT_ENVVAR_CAPTION_LENGTH
|
||
|
);
|
||
|
break;
|
||
|
|
||
|
case USER_VAR:
|
||
|
nResult = LoadString(
|
||
|
hInstance,
|
||
|
IDS_NEW_USERVAR_CAPTION,
|
||
|
szCaption,
|
||
|
EDIT_ENVVAR_CAPTION_LENGTH
|
||
|
);
|
||
|
break;
|
||
|
|
||
|
default:
|
||
|
__leave;
|
||
|
break;
|
||
|
} // switch (g_VarType)
|
||
|
|
||
|
//
|
||
|
// Set the focus to the "Name" field
|
||
|
// SetFocus() doesn't want to work here
|
||
|
//
|
||
|
PostMessage(
|
||
|
hDlg,
|
||
|
WM_NEXTDLGCTL,
|
||
|
(WPARAM) GetDlgItem(hDlg, IDC_ENVVAR_EDIT_NAME),
|
||
|
(LPARAM) TRUE
|
||
|
);
|
||
|
|
||
|
break;
|
||
|
|
||
|
//
|
||
|
// If this is to be an Edit.. dialog, then we need to load the
|
||
|
// proper caption and fill in initial values for the edit
|
||
|
// controls
|
||
|
//
|
||
|
case EDIT_VAR:
|
||
|
|
||
|
switch (g_VarType) {
|
||
|
case SYSTEM_VAR:
|
||
|
nResult = LoadString(
|
||
|
hInstance,
|
||
|
IDS_EDIT_SYSVAR_CAPTION,
|
||
|
szCaption,
|
||
|
EDIT_ENVVAR_CAPTION_LENGTH
|
||
|
);
|
||
|
break;
|
||
|
|
||
|
case USER_VAR:
|
||
|
nResult = LoadString(
|
||
|
hInstance,
|
||
|
IDS_EDIT_USERVAR_CAPTION,
|
||
|
szCaption,
|
||
|
EDIT_ENVVAR_CAPTION_LENGTH
|
||
|
);
|
||
|
break;
|
||
|
|
||
|
default:
|
||
|
__leave;
|
||
|
break;
|
||
|
} // switch (g_VarType)
|
||
|
|
||
|
SetDlgItemText(
|
||
|
hDlg,
|
||
|
IDC_ENVVAR_EDIT_NAME,
|
||
|
g_szVarName
|
||
|
);
|
||
|
SetDlgItemText(
|
||
|
hDlg,
|
||
|
IDC_ENVVAR_EDIT_VALUE,
|
||
|
g_szVarValue
|
||
|
);
|
||
|
|
||
|
//
|
||
|
// Set the focus to the "Value" field
|
||
|
// SetFocus() doesn't want to work here
|
||
|
//
|
||
|
PostMessage(
|
||
|
hDlg,
|
||
|
WM_NEXTDLGCTL,
|
||
|
(WPARAM) GetDlgItem(hDlg, IDC_ENVVAR_EDIT_VALUE),
|
||
|
(LPARAM) TRUE
|
||
|
);
|
||
|
|
||
|
break;
|
||
|
} // switch (g_EditType)
|
||
|
|
||
|
fRetVal = SendMessage(
|
||
|
GetDlgItem(hDlg, IDC_ENVVAR_EDIT_NAME),
|
||
|
EM_SETSEL,
|
||
|
0,
|
||
|
-1
|
||
|
);
|
||
|
fRetVal = SendMessage(
|
||
|
GetDlgItem(hDlg, IDC_ENVVAR_EDIT_VALUE),
|
||
|
EM_SETSEL,
|
||
|
0,
|
||
|
-1
|
||
|
);
|
||
|
|
||
|
fRetVal = SetWindowText(hDlg, szCaption);
|
||
|
|
||
|
} // __try
|
||
|
__finally {
|
||
|
//
|
||
|
// Nothing to clean up. __try is only there for __leave on
|
||
|
// failure capability.
|
||
|
//
|
||
|
} // __finally
|
||
|
|
||
|
return fRetVal ? TRUE : FALSE;
|
||
|
}
|
||
|
|
||
|
BOOL
|
||
|
EnvVarsEditHandleCommand(
|
||
|
IN HWND hDlg,
|
||
|
IN WPARAM wParam,
|
||
|
IN LPARAM lParam
|
||
|
)
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
Handles WM_COMMAND messages sent to the Edit Environment Variables
|
||
|
dialog
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
hDlg -
|
||
|
Supplies window handle
|
||
|
|
||
|
wParam -
|
||
|
Supplies message parameter
|
||
|
|
||
|
lParam -
|
||
|
Supplies message parameter
|
||
|
|
||
|
Return Value:
|
||
|
|
||
|
TRUE if message was handled
|
||
|
FALSE if message was unhandled
|
||
|
|
||
|
--*/
|
||
|
{
|
||
|
switch (LOWORD(wParam)) {
|
||
|
|
||
|
case IDOK:
|
||
|
GetDlgItemText(
|
||
|
hDlg,
|
||
|
IDC_ENVVAR_EDIT_NAME,
|
||
|
g_szVarName,
|
||
|
BUFZ
|
||
|
);
|
||
|
GetDlgItemText(
|
||
|
hDlg,
|
||
|
IDC_ENVVAR_EDIT_VALUE,
|
||
|
g_szVarValue,
|
||
|
BUFZ
|
||
|
);
|
||
|
EndDialog(hDlg, EDIT_CHANGE);
|
||
|
break;
|
||
|
|
||
|
case IDCANCEL:
|
||
|
EndDialog(hDlg, EDIT_NO_CHANGE);
|
||
|
break;
|
||
|
|
||
|
default:
|
||
|
return(FALSE);
|
||
|
break;
|
||
|
|
||
|
} // switch (LOWORD(wParam))
|
||
|
|
||
|
return(TRUE);
|
||
|
}
|