Windows2000/private/windbg64/windbg/paneopt.c
2020-09-30 17:12:32 +02:00

225 lines
4.7 KiB
C

/*++
Copyright (c) 1992 Microsoft Corporation
Module Name:
PANEOPT.C
Abstract:
This file contains the code for dealing with the Pane Manager Options
Author:
Bill Heaton (v-willhe)
Griffith Wm. Kadnier (v-griffk) 10-Mar-1993
Environment:
Win32 - User
--*/
#include "precomp.h"
#pragma hdrstop
#include "include\cntxthlp.h"
#define MAXFMT 512
INT_PTR DlgPaneOptInit(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
INT_PTR DlgPaneOptCommand(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
extern void CheckHorizontalScroll (PPANE p);
WORD DialogType;
HWND hWnd;
PPANE pPane;
PANEINFO Info;
char format[MAXFMT];
char tformat[MAXFMT];
/*** DlgQuickW
** Synopsis:
** bool = DlgQuickW(hwnd, message, wParam, lParam)
** Entry:
** Returns:
** Description:
** Processes messages for "xxx Options" dialog box
** (Edit Find Option)
** MESSAGES:
** WM_INITDIALOG - Initialize dialog box
** WM_COMMAND- Input received
*/
INT_PTR
CALLBACK
DlgPaneOptions(
HWND hDlg,
UINT message,
WPARAM wParam,
LPARAM lParam
)
{
static DWORD HelpArray[]=
{
ID_PANEMGR_FORMAT, IDH_FMT,
ID_PANEMGR_EXPAND_1ST, IDH_EXPAND,
ID_PANEMGR_EXPAND_NONE, IDH_NOTEXPAND,
0, 0
};
switch (message) {
case WM_INITDIALOG:
return ( DlgPaneOptInit( hDlg, message, wParam, lParam) );
case WM_COMMAND:
return ( DlgPaneOptCommand( hDlg, message, wParam, lParam) );
case WM_HELP:
WinHelp((HWND)((LPHELPINFO) lParam)->hItemHandle, "windbg.hlp", HELP_WM_HELP,
(DWORD_PTR)(LPVOID) HelpArray );
return TRUE;
case WM_CONTEXTMENU:
WinHelp ((HWND) wParam, "windbg.hlp", HELP_CONTEXTMENU,
(DWORD_PTR)(LPVOID) HelpArray );
return TRUE;
}
return (FALSE);
} /* DlgPaneOptions() */
INT_PTR
DlgPaneOptInit(
HWND hDlg,
UINT message,
WPARAM wParam,
LPARAM lParam
)
{
switch ( DialogType ) {
case WATCH_WIN:
SendMessage(hDlg, WM_SETTEXT, 0, (LPARAM)"Watch Window Options");
hWnd = GetWatchHWND();
break;
case LOCALS_WIN:
SendMessage(hDlg, WM_SETTEXT, 0, (LPARAM)"Locals Window Options");
hWnd = GetLocalHWND();
break;
case CPU_WIN:
SendMessage(hDlg, WM_SETTEXT, 0, (LPARAM)"CPU Window Options");
hWnd = GetCpuHWND();
break;
case FLOAT_WIN:
SendMessage(hDlg, WM_SETTEXT, 0, (LPARAM)"Float Window Options");
hWnd = GetFloatHWND();
break;
default:
DAssert(FALSE);
}
// Get the Options for the Window
pPane = (PPANE)GetWindowLongPtr(hWnd, GWW_EDIT );
DAssert(pPane);
Info.CtrlId = pPane->nCtrlId;
Info.ItemId = pPane->CurIdx;
(PSTR)(*pPane->fnEditProc)(hWnd,WU_INFO,(WPARAM)&Info,(LPARAM)pPane);
// Set the Format string if it exists
if ( Info.pFormat) {
SendDlgItemMessage(hDlg, ID_PANEMGR_FORMAT, WM_SETTEXT, 0, (LPARAM)Info.pFormat);
}
// Set the Expand button if true
if ( pPane->bFlags.Expand1st ) {
SendDlgItemMessage(hDlg, ID_PANEMGR_EXPAND_1ST, BM_SETCHECK, 1, 0);
} else {
SendDlgItemMessage(hDlg, ID_PANEMGR_EXPAND_NONE, BM_SETCHECK, 1, 0);
}
return(TRUE);
}
INT_PTR
DlgPaneOptCommand(
HWND hDlg,
UINT message,
WPARAM wParam,
LPARAM lParam
)
{
PTRVIT pVit = NULL;
PCHAR pFmt = &format[0];
switch (wParam) {
case ID_PANEMGR_FORMAT:
return 0;
case ID_PANEMGR_EXPAND_1ST:
pPane->bFlags.Expand1st = TRUE;
return 0;
case ID_PANEMGR_EXPAND_NONE:
pPane->bFlags.Expand1st = FALSE;
return 0;
case IDOK:
SendDlgItemMessage(hDlg, ID_PANEMGR_FORMAT, WM_GETTEXT, MAXFMT, (LPARAM)&format[0]);
while ( isspace(*pFmt) ) {
pFmt++;
}
if ( strlen (pFmt) == 0) {
Info.pFormat = NULL;
} else {
// Ensure a leading comma
if ( *pFmt != ',') {
strcpy (tformat,",");
strcat (tformat,pFmt);
pFmt = &tformat[0];
}
Info.pFormat = pFmt;
}
(PSTR)(*pPane->fnEditProc)(hWnd,WU_OPTIONS,(WPARAM)&Info,(LPARAM)pPane);
CheckHorizontalScroll (pPane);
// No break intended
case IDCANCEL:
pPane = NULL;
hWnd = 0;
memset( &Info, 0, sizeof(PANEINFO));
EndDialog(hDlg, FALSE);
return 0;
}
return 1;
}