184 lines
5.1 KiB
C
184 lines
5.1 KiB
C
/*******************************************************************************
|
|
*
|
|
* (C) COPYRIGHT MICROSOFT CORP., 1993-1994
|
|
*
|
|
* TITLE: REGSTRED.C
|
|
*
|
|
* VERSION: 4.01
|
|
*
|
|
* AUTHOR: Tracy Sharpe
|
|
*
|
|
* DATE: 05 Mar 1994
|
|
*
|
|
* String edit dialog for use by the Registry Editor.
|
|
*
|
|
********************************************************************************
|
|
*
|
|
* CHANGE LOG:
|
|
*
|
|
* DATE REV DESCRIPTION
|
|
* ----------- --- -------------------------------------------------------------
|
|
* 05 Mar 1994 TCS Original implementation.
|
|
*
|
|
*******************************************************************************/
|
|
|
|
#include "pch.h"
|
|
#include "regresid.h"
|
|
#include "reghelp.h"
|
|
|
|
const DWORD s_EditStringValueHelpIDs[] = {
|
|
IDC_VALUEDATA, IDH_REGEDIT_VALUEDATA,
|
|
IDC_VALUENAME, IDH_REGEDIT_VALUENAME,
|
|
0, 0
|
|
};
|
|
|
|
BOOL
|
|
PASCAL
|
|
EditStringValue_OnInitDialog(
|
|
HWND hWnd,
|
|
HWND hFocusWnd,
|
|
LPARAM lParam
|
|
);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* EditStringValueDlgProc
|
|
*
|
|
* DESCRIPTION:
|
|
*
|
|
* PARAMETERS:
|
|
*
|
|
*******************************************************************************/
|
|
|
|
INT_PTR
|
|
CALLBACK
|
|
EditStringValueDlgProc(
|
|
HWND hWnd,
|
|
UINT Message,
|
|
WPARAM wParam,
|
|
LPARAM lParam
|
|
)
|
|
{
|
|
|
|
LPEDITVALUEPARAM lpEditValueParam;
|
|
|
|
|
|
switch (Message)
|
|
{
|
|
HANDLE_MSG(hWnd, WM_INITDIALOG, EditStringValue_OnInitDialog);
|
|
|
|
case WM_COMMAND:
|
|
{
|
|
DWORD dwCommand = GET_WM_COMMAND_ID(wParam, lParam);
|
|
switch (dwCommand)
|
|
{
|
|
case IDOK:
|
|
{
|
|
UINT ccValueData;
|
|
UINT cbValueData;
|
|
PBYTE pbValueData = NULL;
|
|
|
|
lpEditValueParam = (LPEDITVALUEPARAM) GetWindowLongPtr(hWnd, DWLP_USER);
|
|
|
|
// this maybe a multi-string, if so the sizeof(TCHAR) is added to
|
|
// allow for the multi-string to be terminated also.
|
|
ccValueData = (UINT) SendDlgItemMessage(hWnd, IDC_VALUEDATA,
|
|
WM_GETTEXTLENGTH, 0, 0) + 2;
|
|
|
|
cbValueData = ccValueData * sizeof(TCHAR);
|
|
|
|
if (cbValueData > lpEditValueParam->cbValueData)
|
|
{
|
|
// need a bigger buffer
|
|
PBYTE pbValueData =
|
|
LocalReAlloc(lpEditValueParam->pValueData, cbValueData, LMEM_MOVEABLE);
|
|
|
|
if (!pbValueData)
|
|
{
|
|
InternalMessageBox(g_hInstance, hWnd, MAKEINTRESOURCE(IDS_EDITVALNOMEMORY),
|
|
MAKEINTRESOURCE(IDS_EDITVALERRORTITLE), MB_ICONERROR | MB_OK, NULL);
|
|
dwCommand = IDCANCEL;
|
|
}
|
|
else
|
|
{
|
|
lpEditValueParam->pValueData = pbValueData;
|
|
}
|
|
}
|
|
|
|
// sizeof(TCHAR) to remove multi-string null char from count
|
|
lpEditValueParam->cbValueData = cbValueData - sizeof(TCHAR);
|
|
|
|
GetDlgItemText(hWnd, IDC_VALUEDATA, (PTSTR)lpEditValueParam->
|
|
pValueData, lpEditValueParam->cbValueData - sizeof(TCHAR));
|
|
|
|
lpEditValueParam->pValueData[lpEditValueParam->cbValueData - sizeof(TCHAR)]
|
|
= TEXT('\0');
|
|
}
|
|
// FALL THROUGH
|
|
|
|
case IDCANCEL:
|
|
EndDialog(hWnd, dwCommand);
|
|
break;
|
|
|
|
}
|
|
}
|
|
break;
|
|
|
|
case WM_HELP:
|
|
WinHelp(((LPHELPINFO) lParam)-> hItemHandle, g_pHelpFileName,
|
|
HELP_WM_HELP, (ULONG_PTR) s_EditStringValueHelpIDs);
|
|
break;
|
|
|
|
case WM_CONTEXTMENU:
|
|
WinHelp((HWND) wParam, g_pHelpFileName, HELP_CONTEXTMENU,
|
|
(ULONG_PTR) s_EditStringValueHelpIDs);
|
|
break;
|
|
|
|
default:
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* EditStringValue_OnInitDialog
|
|
*
|
|
* DESCRIPTION:
|
|
*
|
|
* PARAMETERS:
|
|
* hWnd, handle of EditStringValue window.
|
|
* hFocusWnd,
|
|
* lParam,
|
|
*
|
|
*******************************************************************************/
|
|
|
|
BOOL
|
|
PASCAL
|
|
EditStringValue_OnInitDialog(
|
|
HWND hWnd,
|
|
HWND hFocusWnd,
|
|
LPARAM lParam
|
|
)
|
|
{
|
|
LPEDITVALUEPARAM lpEditValueParam;
|
|
|
|
// Change maximum number of characters of the edit control, to its
|
|
// maximum limit (from 3000 characters to 4G characters).
|
|
SendDlgItemMessage( hWnd, IDC_VALUEDATA, EM_LIMITTEXT, 0, 0L );
|
|
|
|
SetWindowLongPtr(hWnd, DWLP_USER, lParam);
|
|
lpEditValueParam = (LPEDITVALUEPARAM) lParam;
|
|
|
|
SetDlgItemText(hWnd, IDC_VALUENAME, lpEditValueParam-> pValueName);
|
|
SetDlgItemText(hWnd, IDC_VALUEDATA, (PTSTR)lpEditValueParam-> pValueData);
|
|
|
|
return TRUE;
|
|
|
|
UNREFERENCED_PARAMETER(hFocusWnd);
|
|
|
|
}
|