|
|
/*++
Copyright (c) 1998 Microsoft Corporation
Module Name:
dialogs.c
Abstract:
functions handling the dialog boxes in memdbe.exe
Author:
Matthew Vanderzee (mvander) 13-Aug-1999
Revision History:
--*/
#include "pch.h"
#include "dbeditp.h"
BOOL CALLBACK pAboutProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_INITDIALOG: return TRUE;
case WM_COMMAND: if (LOWORD(wParam) == IDOK) { EndDialog(hDlg, LOWORD(wParam)); return TRUE; } break; } return FALSE; }
VOID AboutDialog ( HWND hwnd ) { DialogBox(g_hInst, MAKEINTRESOURCE(IDD_DIALOG_ABOUT), hwnd, pAboutProc); }
typedef struct { PSTR StringBuffer; BOOL UsePattern; } FINDSTRUCT, *PFINDSTRUCT;
BOOL CALLBACK pKeyFindDialogProc ( HWND hdlg, UINT uMsg, WPARAM wParam, LPARAM lParam ) { static BOOL UsePatternState = TRUE; static PFINDSTRUCT fs;
switch (uMsg) { case WM_INITDIALOG: fs = (PFINDSTRUCT)lParam; if (fs->StringBuffer) { SetDlgItemText (hdlg, IDC_EDIT_KEYPATTERN, fs->StringBuffer); }
SetFocus (GetDlgItem (hdlg, IDC_EDIT_KEYPATTERN)); SendMessage(GetDlgItem (hdlg, IDC_EDIT_KEYPATTERN), EM_SETSEL, 0, -1); CheckDlgButton (hdlg, IDC_CHECK_USEPATTERN, UsePatternState ? BST_CHECKED : BST_UNCHECKED);
break;
case WM_COMMAND: switch (LOWORD(wParam)) {
case IDOK: if (fs->StringBuffer) { GetDlgItemText (hdlg, IDC_EDIT_KEYPATTERN, fs->StringBuffer, MEMDB_MAX); } UsePatternState = (IsDlgButtonChecked (hdlg, IDC_CHECK_USEPATTERN) == BST_CHECKED); fs->UsePattern = UsePatternState; EndDialog (hdlg, TRUE); break; case IDCANCEL: EndDialog (hdlg, FALSE); break; default: return DefWindowProc(hdlg, uMsg, wParam, lParam); };
break; };
return FALSE; }
BOOL KeyFindDialog ( HWND hwnd, PSTR StringBuffer, PBOOL UsePattern ) { BOOL b; FINDSTRUCT fs;
fs.StringBuffer = StringBuffer;
if (!DialogBoxParam ( g_hInst, MAKEINTRESOURCE(IDD_DIALOG_KEYFIND), hwnd, pKeyFindDialogProc, (LPARAM)&fs )) { return FALSE; }
if (UsePattern) { *UsePattern = fs.UsePattern; }
return TRUE; }
typedef struct { BYTE DataFlag; UINT DataValue; BOOL AddData; BYTE Instance; } DATASTRUCT, *PDATASTRUCT;
#define DATA_STR_LEN 16
BOOL CALLBACK pShortDataDialogProc ( HWND hdlg, UINT uMsg, WPARAM wParam, LPARAM lParam ) { static INT InitBaseButtonCheck = IDC_RADIO_HEX; static BOOL AddButtonCheck = FALSE; static PDATASTRUCT pds = NULL; static CHAR DataStr[DATA_STR_LEN];
switch (uMsg) {
case WM_INITDIALOG: pds = (PDATASTRUCT)lParam; pds->DataValue = 0; CheckDlgButton (hdlg, InitBaseButtonCheck, BST_CHECKED); CheckDlgButton (hdlg, AddButtonCheck ? IDC_RADIO_ADDDATA : IDC_RADIO_SETDATA, BST_CHECKED);
switch (pds->DataFlag) { case DATAFLAG_VALUE: SetWindowText (hdlg, "Set Value"); break; case DATAFLAG_FLAGS: SetWindowText (hdlg, "Set Flags"); break; };
SetFocus (GetDlgItem (hdlg, IDC_EDIT_DATA)); break;
case WM_COMMAND:
switch (LOWORD(wParam)) {
case IDOK: GetDlgItemText (hdlg, IDC_EDIT_DATA, DataStr, DATA_STR_LEN);
if (IsDlgButtonChecked (hdlg, IDC_RADIO_HEX) == BST_CHECKED) { pds->DataValue = strtol (DataStr, NULL, 16); InitBaseButtonCheck = IDC_RADIO_HEX; } else { pds->DataValue = strtol (DataStr, NULL, 10); InitBaseButtonCheck = IDC_RADIO_DEC; }
pds->AddData = (IsDlgButtonChecked (hdlg, IDC_RADIO_ADDDATA) == BST_CHECKED); AddButtonCheck = pds->AddData;
EndDialog (hdlg, TRUE); break; case IDCANCEL: EndDialog (hdlg, FALSE); break; default: return DefWindowProc(hdlg, uMsg, wParam, lParam); };
break; };
return FALSE; }
BOOL ShortDataDialog ( HWND hwnd, BYTE DataFlag, PDWORD DataValue, PBOOL AddData, PBYTE Instance ) {
DATASTRUCT ds;
if ((DataFlag != DATAFLAG_VALUE) && (DataFlag != DATAFLAG_FLAGS)) { return FALSE; }
ZeroMemory (&ds, sizeof (ds)); ds.DataFlag = DataFlag;
if (!DialogBoxParam ( g_hInst, MAKEINTRESOURCE(IDD_DIALOG_SHORTDATA), hwnd, pShortDataDialogProc, (LPARAM)&ds )) {
return FALSE; }
if (DataValue) { *DataValue = ds.DataValue; }
if (AddData) { *AddData = ds.AddData; }
if (Instance) { *Instance = ds.Instance; }
return TRUE; }
typedef struct { PSTR Key1, Key2; } LINKAGESTRUCT, *PLINKAGESTRUCT;
BOOL CALLBACK pLinkageDialogProc ( HWND hdlg, UINT uMsg, WPARAM wParam, LPARAM lParam ) { static PLINKAGESTRUCT pls = NULL;
switch (uMsg) {
case WM_INITDIALOG: pls = (PLINKAGESTRUCT)lParam;
SetDlgItemText (hdlg, IDC_EDIT_KEY1, pls->Key1); SetDlgItemText (hdlg, IDC_EDIT_KEY2, pls->Key2);
SetFocus (GetDlgItem (hdlg, (pls->Key1[0]=='\0') ? IDC_EDIT_KEY1 : IDC_EDIT_KEY2)); break;
case WM_COMMAND:
switch (LOWORD(wParam)) {
case IDOK: GetDlgItemText (hdlg, IDC_EDIT_KEY1, pls->Key1, MEMDB_MAX); GetDlgItemText (hdlg, IDC_EDIT_KEY2, pls->Key2, MEMDB_MAX); EndDialog (hdlg, TRUE); break; case IDCANCEL: EndDialog (hdlg, FALSE); break; default: return DefWindowProc(hdlg, uMsg, wParam, lParam); };
break; };
return FALSE; }
BOOL LinkageDialog ( HWND hwnd, PSTR Key1, PSTR Key2 ) { LINKAGESTRUCT ls;
if (!Key1 || !Key2) { return FALSE; }
ls.Key1 = Key1; ls.Key2 = Key2;
if (!DialogBoxParam ( g_hInst, MAKEINTRESOURCE(IDD_DIALOG_LINKAGE), hwnd, pLinkageDialogProc, (LPARAM)&ls )) { return FALSE; }
return (Key1[0]!='\0' && Key2[0]!='\0'); }
BOOL CALLBACK pCreateKeyDialogProc ( HWND hdlg, UINT uMsg, WPARAM wParam, LPARAM lParam ) { static PSTR Str = NULL;
switch (uMsg) {
case WM_INITDIALOG: Str = (PSTR)lParam; SetFocus (GetDlgItem (hdlg, IDC_EDIT_KEY)); break;
case WM_COMMAND:
switch (LOWORD(wParam)) {
case IDOK: GetDlgItemText (hdlg, IDC_EDIT_KEY, Str, MEMDB_MAX); EndDialog (hdlg, TRUE); break; case IDCANCEL: EndDialog (hdlg, FALSE); break; default: return DefWindowProc(hdlg, uMsg, wParam, lParam); };
break; };
return FALSE; }
BOOL CreateKeyDialog ( HWND hwnd, PSTR KeyName ) { if (!KeyName) { return FALSE; }
return DialogBoxParam ( g_hInst, MAKEINTRESOURCE(IDD_DIALOG_CREATEKEY), hwnd, pCreateKeyDialogProc, (LPARAM)KeyName ); }
|