mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1030 lines
30 KiB
1030 lines
30 KiB
/*
|
|
==============================================================================
|
|
|
|
Application:
|
|
|
|
Microsoft Windows NT (TM) Performance Monitor
|
|
|
|
File:
|
|
Command.c -- PerfmonCommand routine and helpers.
|
|
|
|
This file contains the PerfmonCommand routine, which handles
|
|
all of the user's menu selections.
|
|
|
|
Copyright 1992-1993, Microsoft Corporation. All Rights Reserved.
|
|
Microsoft Confidential.
|
|
==============================================================================
|
|
*/
|
|
|
|
|
|
//==========================================================================//
|
|
// Includes //
|
|
//==========================================================================//
|
|
|
|
|
|
#include "stdio.h"
|
|
#include "perfmon.h"
|
|
#include "command.h" // External declarations for this file
|
|
#include <shellapi.h> // for ShellAbout
|
|
|
|
#include "addlog.h" // for AddLog
|
|
#include "alert.h" // for CurrentAlertLine
|
|
#include "bookmark.h" // for AddBookmark
|
|
#include "cderr.h"
|
|
#include "datasrc.h" // for DisplayDataSourceOptions
|
|
#include "dialogs.h"
|
|
#include "dispoptn.h" // for DisplayDisplayOptions
|
|
#include "fileopen.h" // for FileOpen
|
|
#include "grafdata.h" // for ChartDeleteLine ClearGraphDisplay
|
|
#include "grafdisp.h" // for ToggleGraphRefresh
|
|
#include "graph.h" // for SizeGraphComponents
|
|
#include "init.h" // for PerfmonClose
|
|
#include "legend.h"
|
|
#include "log.h" // for LogTimer
|
|
#include "logoptns.h"
|
|
#include "playback.h"
|
|
#include "report.h" // for CurrentReportItem
|
|
#include "rptoptns.h" // for DisplayReportOptions
|
|
#include "status.h" // for StatusUpdateIcons
|
|
#include "timefrm.h" // for SetTimeframe
|
|
#include "toolbar.h" // for ToolbarDepressButton
|
|
#include "utils.h"
|
|
#include "perfmops.h" // for SaveWorkspace
|
|
|
|
int static deltax ;
|
|
int static deltay ;
|
|
|
|
#define ABOUT_TIMER_ID 10
|
|
|
|
INT_PTR
|
|
FAR
|
|
WINAPI
|
|
AboutDlgProc (
|
|
HWND hDlg,
|
|
UINT iMessage,
|
|
WPARAM wParam,
|
|
LPARAM lParam
|
|
)
|
|
{
|
|
BOOL bHandled ;
|
|
|
|
bHandled = TRUE ;
|
|
switch (iMessage) {
|
|
case WM_INITDIALOG:
|
|
deltax = 0 ;
|
|
deltay = 0 ;
|
|
dwCurrentDlgID = 0 ;
|
|
SetTimer(hDlg, ABOUT_TIMER_ID, 1000, NULL) ;
|
|
WindowCenter (hDlg) ;
|
|
return (TRUE) ;
|
|
|
|
case WM_TIMER:
|
|
deltax += 2 ;
|
|
if (deltax > 60)
|
|
deltax = 0 ;
|
|
|
|
deltay += 5 ;
|
|
if (deltay > 60)
|
|
deltay = 0 ;
|
|
|
|
WindowInvalidate (DialogControl (hDlg, 524)) ;
|
|
break ;
|
|
|
|
case WM_DRAWITEM:
|
|
{
|
|
int xPos, yPos ;
|
|
LPDRAWITEMSTRUCT lpItem ;
|
|
|
|
lpItem = (LPDRAWITEMSTRUCT) lParam ;
|
|
xPos = lpItem->rcItem.left + deltax ;
|
|
yPos = lpItem->rcItem.top + deltay ;
|
|
DrawIcon (lpItem->hDC, xPos, yPos, hIcon) ;
|
|
}
|
|
break ;
|
|
|
|
case WM_CLOSE:
|
|
dwCurrentDlgID = 0 ;
|
|
KillTimer (hDlg, ABOUT_TIMER_ID) ;
|
|
EndDialog (hDlg, 1) ;
|
|
break ;
|
|
|
|
case WM_COMMAND:
|
|
switch (wParam) {
|
|
case IDD_OK:
|
|
dwCurrentDlgID = 0 ;
|
|
EndDialog (hDlg, 1) ;
|
|
break ;
|
|
|
|
default:
|
|
bHandled = FALSE ;
|
|
break;
|
|
}
|
|
break;
|
|
|
|
default:
|
|
bHandled = FALSE ;
|
|
break ;
|
|
}
|
|
|
|
return (bHandled) ;
|
|
}
|
|
|
|
|
|
//==========================================================================//
|
|
// Local Functions //
|
|
//==========================================================================//
|
|
|
|
|
|
void
|
|
ChangeView (
|
|
HWND hWnd,
|
|
int iNewView
|
|
)
|
|
{
|
|
HMENU hMenu = GetMenu (hWnd) ;
|
|
BOOL bViewChart, bViewAlert, bViewLog, bViewReport ;
|
|
|
|
#ifdef ADVANCED_PERFMON
|
|
iPerfmonView = iNewView ;
|
|
bViewChart = bViewAlert = bViewLog = bViewReport = FALSE;
|
|
|
|
switch (iNewView) {
|
|
case IDM_VIEWCHART:
|
|
bViewChart = TRUE ;
|
|
break ;
|
|
|
|
case IDM_VIEWALERT:
|
|
bViewAlert = TRUE ;
|
|
break ;
|
|
|
|
case IDM_VIEWLOG:
|
|
bViewLog = TRUE ;
|
|
break ;
|
|
|
|
case IDM_VIEWREPORT:
|
|
bViewReport = TRUE ;
|
|
break ;
|
|
}
|
|
|
|
WindowShow (hWndGraph, bViewChart) ;
|
|
WindowShow (hWndAlert, bViewAlert) ;
|
|
WindowShow (hWndLog, bViewLog) ;
|
|
WindowShow (hWndReport, bViewReport) ;
|
|
|
|
// set focus on the Legend window
|
|
if (iPerfmonView == IDM_VIEWCHART) {
|
|
SetFocus (hWndGraphLegend) ;
|
|
} else if (iPerfmonView == IDM_VIEWALERT) {
|
|
SetFocus (hWndAlertLegend) ;
|
|
} else if (iPerfmonView == IDM_VIEWLOG) {
|
|
SetFocus (hWndLogEntries) ;
|
|
} else if (iPerfmonView == IDM_VIEWREPORT) {
|
|
SetFocus (hWndReport) ;
|
|
}
|
|
|
|
if (hMenu) {
|
|
MenuCheck (hMenu, IDM_VIEWCHART, bViewChart) ;
|
|
MenuCheck (hMenu, IDM_VIEWALERT, bViewAlert) ;
|
|
MenuCheck (hMenu, IDM_VIEWLOG, bViewLog) ;
|
|
MenuCheck (hMenu, IDM_VIEWREPORT, bViewReport) ;
|
|
|
|
// show the Title bar
|
|
ShowPerfmonWindowText () ;
|
|
}
|
|
|
|
ToolbarDepressButton (hWndToolbar, ChartTool, bViewChart) ;
|
|
ToolbarDepressButton (hWndToolbar, AlertTool, bViewAlert) ;
|
|
ToolbarDepressButton (hWndToolbar, LogTool, bViewLog) ;
|
|
ToolbarDepressButton (hWndToolbar, ReportTool, bViewReport) ;
|
|
#else
|
|
// only Chart view in Perfmon Lite
|
|
iPerfmonView = IDM_VIEWCHART ;
|
|
WindowShow (hWndGraph, TRUE) ;
|
|
#endif
|
|
|
|
DrawMenuBar(hWnd) ;
|
|
StatusLineReady (hWndStatus) ;
|
|
}
|
|
|
|
|
|
//==========================================================================//
|
|
// Message Handlers //
|
|
//==========================================================================//
|
|
|
|
|
|
void
|
|
ViewChart (
|
|
HWND hWnd
|
|
)
|
|
{
|
|
if (Options.bMenubar)
|
|
SetMenu (hWnd, hMenuChart) ;
|
|
ChangeView (hWnd, IDM_VIEWCHART) ;
|
|
}
|
|
|
|
|
|
void
|
|
ViewAlert (
|
|
HWND hWnd
|
|
)
|
|
{
|
|
iUnviewedAlerts = 0 ;
|
|
StatusUpdateIcons (hWndStatus) ;
|
|
if (Options.bMenubar)
|
|
SetMenu (hWnd, hMenuAlert) ;
|
|
ChangeView (hWnd, IDM_VIEWALERT) ;
|
|
}
|
|
|
|
|
|
void
|
|
ViewLog (
|
|
HWND hWnd
|
|
)
|
|
{
|
|
if (Options.bMenubar)
|
|
SetMenu (hWnd, hMenuLog) ;
|
|
ChangeView (hWnd, IDM_VIEWLOG) ;
|
|
}
|
|
|
|
|
|
void
|
|
ViewReport (
|
|
HWND hWnd
|
|
)
|
|
{
|
|
if (Options.bMenubar)
|
|
SetMenu (hWnd, hMenuReport) ;
|
|
ChangeView (hWnd, IDM_VIEWREPORT) ;
|
|
}
|
|
|
|
|
|
#ifdef KEEP_MANUALREFRESH
|
|
void
|
|
ToggleRefresh (
|
|
HWND hWnd
|
|
)
|
|
{
|
|
BOOL bRefresh ;
|
|
|
|
switch (iPerfmonView) {
|
|
case IDM_VIEWCHART:
|
|
bRefresh = ToggleGraphRefresh (hWndGraph) ;
|
|
break ;
|
|
|
|
case IDM_VIEWALERT:
|
|
bRefresh = ToggleAlertRefresh (hWndAlert) ;
|
|
break ;
|
|
|
|
case IDM_VIEWLOG:
|
|
bRefresh = ToggleLogRefresh (hWndLog) ;
|
|
break ;
|
|
|
|
case IDM_VIEWREPORT:
|
|
bRefresh = ToggleReportRefresh (hWndReport) ;
|
|
break ;
|
|
}
|
|
|
|
MenuCheck (GetMenu (hWnd), IDM_OPTIONSMANUALREFRESH, bRefresh) ;
|
|
}
|
|
#endif
|
|
|
|
|
|
//==========================================================================//
|
|
// Exported Functions //
|
|
//==========================================================================//
|
|
|
|
|
|
BOOL
|
|
PerfmonCommand (
|
|
HWND hWnd,
|
|
WPARAM wParam,
|
|
LPARAM lParam
|
|
)
|
|
/*
|
|
Effect: Respond to the user's menu selection, found in wParam.
|
|
In particular, branch to the appropriate OnXXX function
|
|
to perform the action associated with each command.
|
|
|
|
Called By: MainWndProc (perfmon.c), in response to a WM_COMMAND
|
|
message.
|
|
*/
|
|
{
|
|
PLINESTRUCT pLine ;
|
|
BOOL bPrepareMenu = TRUE ;
|
|
|
|
switch (LOWORD (wParam)) {
|
|
|
|
//=============================//
|
|
// Toolbar Commands //
|
|
//=============================//
|
|
|
|
case IDM_TOOLBARADD:
|
|
bPrepareMenu = FALSE ;
|
|
|
|
switch (iPerfmonView) {
|
|
case IDM_VIEWCHART:
|
|
SendMessage (hWnd, WM_COMMAND, IDM_EDITADDCHART, lParam) ;
|
|
break ;
|
|
|
|
case IDM_VIEWALERT:
|
|
SendMessage (hWnd, WM_COMMAND, IDM_EDITADDALERT, lParam) ;
|
|
break ;
|
|
|
|
case IDM_VIEWLOG:
|
|
SendMessage (hWnd, WM_COMMAND, IDM_EDITADDLOG, lParam) ;
|
|
break ;
|
|
|
|
case IDM_VIEWREPORT:
|
|
SendMessage (hWnd, WM_COMMAND, IDM_EDITADDREPORT, lParam) ;
|
|
break ;
|
|
}
|
|
break ;
|
|
|
|
|
|
case IDM_TOOLBARMODIFY:
|
|
bPrepareMenu = FALSE ;
|
|
|
|
switch (iPerfmonView) {
|
|
case IDM_VIEWCHART:
|
|
SendMessage (hWnd, WM_COMMAND, IDM_EDITMODIFYCHART, lParam) ;
|
|
break ;
|
|
|
|
case IDM_VIEWALERT:
|
|
SendMessage (hWnd, WM_COMMAND, IDM_EDITMODIFYALERT, lParam) ;
|
|
break ;
|
|
|
|
case IDM_VIEWREPORT:
|
|
SendMessage (hWnd, WM_COMMAND, IDM_EDITMODIFYREPORT, lParam) ;
|
|
break ;
|
|
}
|
|
break ;
|
|
|
|
|
|
case IDM_TOOLBARDELETE:
|
|
bPrepareMenu = FALSE ;
|
|
|
|
switch (iPerfmonView) {
|
|
case IDM_VIEWCHART:
|
|
SendMessage (hWnd, WM_COMMAND, IDM_EDITDELETECHART, lParam) ;
|
|
break ;
|
|
|
|
case IDM_VIEWALERT:
|
|
SendMessage (hWnd, WM_COMMAND, IDM_EDITDELETEALERT, lParam) ;
|
|
break ;
|
|
|
|
case IDM_VIEWLOG:
|
|
SendMessage (hWnd, WM_COMMAND, IDM_EDITDELETELOG, lParam) ;
|
|
break ;
|
|
|
|
case IDM_VIEWREPORT:
|
|
SendMessage (hWnd, WM_COMMAND, IDM_EDITDELETEREPORT, lParam) ;
|
|
break ;
|
|
}
|
|
break ;
|
|
|
|
|
|
case IDM_TOOLBARREFRESH:
|
|
bPrepareMenu = FALSE ;
|
|
|
|
switch (iPerfmonView) {
|
|
case IDM_VIEWCHART:
|
|
SendMessage (hWnd, WM_COMMAND, IDM_OPTIONSREFRESHNOWCHART, lParam) ;
|
|
break ;
|
|
|
|
case IDM_VIEWALERT:
|
|
SendMessage (hWnd, WM_COMMAND, IDM_OPTIONSREFRESHNOWALERT, lParam) ;
|
|
break ;
|
|
|
|
case IDM_VIEWLOG:
|
|
SendMessage (hWnd, WM_COMMAND, IDM_OPTIONSREFRESHNOWLOG, lParam) ;
|
|
break ;
|
|
|
|
case IDM_VIEWREPORT:
|
|
SendMessage (hWnd, WM_COMMAND, IDM_OPTIONSREFRESHNOWREPORT, lParam) ;
|
|
break ;
|
|
}
|
|
break ;
|
|
|
|
|
|
case IDM_TOOLBAROPTIONS:
|
|
bPrepareMenu = FALSE ;
|
|
|
|
switch (iPerfmonView) {
|
|
case IDM_VIEWCHART:
|
|
SendMessage (hWnd, WM_COMMAND, IDM_OPTIONSCHART, lParam) ;
|
|
break ;
|
|
|
|
case IDM_VIEWALERT:
|
|
SendMessage (hWnd, WM_COMMAND, IDM_OPTIONSALERT, lParam) ;
|
|
break ;
|
|
|
|
case IDM_VIEWLOG:
|
|
SendMessage (hWnd, WM_COMMAND, IDM_OPTIONSLOG, lParam) ;
|
|
break ;
|
|
|
|
case IDM_VIEWREPORT:
|
|
SendMessage (hWnd, WM_COMMAND, IDM_OPTIONSREPORT, lParam) ;
|
|
break ;
|
|
}
|
|
break ;
|
|
|
|
|
|
//=============================//
|
|
// "File" Commands //
|
|
//=============================//
|
|
|
|
|
|
case IDM_FILENEWCHART:
|
|
// if (QuerySaveChart (hWnd, pGraphs))
|
|
ResetGraphView (hWndGraph) ;
|
|
break ;
|
|
|
|
|
|
case IDM_FILENEWALERT:
|
|
// if (QuerySaveAlert (hWnd, hWndAlert))
|
|
ResetAlertView (hWndAlert) ;
|
|
break ;
|
|
|
|
case IDM_FILENEWLOG:
|
|
ResetLogView (hWndLog) ;
|
|
break ;
|
|
|
|
case IDM_FILENEWREPORT:
|
|
ResetReportView (hWndReport) ;
|
|
break ;
|
|
|
|
case IDM_FILEOPENCHART:
|
|
FileOpen (hWndGraph, IDS_CHARTFILE, NULL) ;
|
|
break ;
|
|
|
|
case IDM_FILEOPENALERT:
|
|
FileOpen (hWndAlert, IDS_ALERTFILE, NULL) ;
|
|
break ;
|
|
|
|
case IDM_FILEOPENLOG:
|
|
FileOpen (hWndLog, IDS_LOGFILE, NULL) ;
|
|
break ;
|
|
|
|
case IDM_FILEOPENREPORT:
|
|
FileOpen (hWndReport, IDS_REPORTFILE, NULL) ;
|
|
break ;
|
|
|
|
case IDM_FILESAVECHART:
|
|
case IDM_FILESAVEASCHART:
|
|
bPrepareMenu = FALSE ;
|
|
SaveChart (hWndGraph, 0,
|
|
(LOWORD (wParam) == IDM_FILESAVEASCHART) ? TRUE : FALSE) ;
|
|
break;
|
|
|
|
case IDM_FILESAVEALERT:
|
|
case IDM_FILESAVEASALERT:
|
|
bPrepareMenu = FALSE ;
|
|
SaveAlert (hWndAlert, 0,
|
|
(LOWORD (wParam) == IDM_FILESAVEASALERT) ? TRUE : FALSE) ;
|
|
break ;
|
|
|
|
case IDM_FILESAVELOG:
|
|
case IDM_FILESAVEASLOG:
|
|
bPrepareMenu = FALSE ;
|
|
SaveLog (hWndLog, 0,
|
|
(LOWORD (wParam) == IDM_FILESAVEASLOG) ? TRUE : FALSE) ;
|
|
break ;
|
|
|
|
case IDM_FILESAVEREPORT:
|
|
case IDM_FILESAVEASREPORT:
|
|
bPrepareMenu = FALSE ;
|
|
SaveReport (hWndReport, 0,
|
|
(LOWORD (wParam) == IDM_FILESAVEASREPORT) ? TRUE : FALSE) ;
|
|
break ;
|
|
|
|
|
|
case IDM_FILESAVEWORKSPACE:
|
|
bPrepareMenu = FALSE ;
|
|
SaveWorkspace () ;
|
|
break ;
|
|
|
|
case IDM_FILEEXPORTCHART:
|
|
bPrepareMenu = FALSE ;
|
|
ExportChart () ;
|
|
break ;
|
|
|
|
case IDM_FILEEXPORTALERT:
|
|
bPrepareMenu = FALSE ;
|
|
ExportAlert () ;
|
|
break ;
|
|
|
|
case IDM_FILEEXPORTLOG:
|
|
bPrepareMenu = FALSE ;
|
|
ExportLog () ;
|
|
break ;
|
|
|
|
case IDM_FILEEXPORTREPORT:
|
|
bPrepareMenu = FALSE ;
|
|
ExportReport () ;
|
|
break ;
|
|
|
|
|
|
#ifdef KEEP_PRINT
|
|
case IDM_FILEPRINTCHART:
|
|
PrintChart (hWnd, pGraphs) ;
|
|
break ;
|
|
|
|
|
|
case IDM_FILEPRINTREPORT:
|
|
PrintReport (hWnd, hWndReport) ;
|
|
break ;
|
|
#endif
|
|
|
|
case IDM_FILEEXIT:
|
|
PerfmonClose (hWnd) ;
|
|
bPrepareMenu = FALSE ;
|
|
break ;
|
|
|
|
|
|
//=============================//
|
|
// "Edit" Commands //
|
|
//=============================//
|
|
|
|
|
|
case IDM_EDITADDCHART:
|
|
AddChart (hWnd) ;
|
|
break;
|
|
|
|
case IDM_EDITADDALERT:
|
|
AddAlert (hWnd) ;
|
|
break;
|
|
|
|
case IDM_EDITADDLOG:
|
|
AddLog (hWnd) ;
|
|
break ;
|
|
|
|
case IDM_EDITADDREPORT:
|
|
AddReport (hWnd) ;
|
|
break ;
|
|
|
|
case IDM_EDITCLEARCHART :
|
|
ClearGraphDisplay (pGraphs) ;
|
|
break ;
|
|
|
|
case IDM_EDITCLEARALERT:
|
|
ClearAlertDisplay (hWndAlert) ;
|
|
break ;
|
|
|
|
case IDM_EDITCLEARREPORT:
|
|
ClearReportDisplay (hWndReport) ;
|
|
break ;
|
|
|
|
case IDM_EDITDELETECHART:
|
|
pLine = CurrentGraphLine (hWndGraph) ;
|
|
if (pLine)
|
|
ChartDeleteLine(pGraphs, pLine) ;
|
|
break ;
|
|
|
|
case IDM_EDITDELETEALERT:
|
|
pLine = CurrentAlertLine (hWndAlert) ;
|
|
if (pLine)
|
|
AlertDeleteLine (hWndAlert, pLine) ;
|
|
break ;
|
|
|
|
case IDM_EDITDELETELOG:
|
|
LogDeleteEntry (hWndLog) ;
|
|
break ;
|
|
|
|
case IDM_EDITDELETEREPORT:
|
|
if (CurrentReportItem (hWndReport))
|
|
ReportDeleteItem (hWndReport) ;
|
|
break ;
|
|
|
|
case IDM_EDITMODIFYCHART:
|
|
EditChart (hWnd) ;
|
|
break ;
|
|
|
|
case IDM_EDITMODIFYALERT:
|
|
EditAlert (hWnd) ;
|
|
break ;
|
|
|
|
case IDM_EDITTIMEWINDOW:
|
|
if (PlayingBackLog()) {
|
|
SetTimeframe (hWnd) ;
|
|
}
|
|
break ;
|
|
|
|
|
|
//=============================//
|
|
// "View" Commands //
|
|
//=============================//
|
|
|
|
|
|
case IDM_VIEWCHART:
|
|
if (iPerfmonView != IDM_VIEWCHART) {
|
|
ViewChart (hWnd) ;
|
|
} else {
|
|
bPrepareMenu = FALSE ;
|
|
ToolbarDepressButton (hWndToolbar, ChartTool, TRUE) ;
|
|
}
|
|
break ;
|
|
|
|
case IDM_VIEWALERT:
|
|
if (iPerfmonView != IDM_VIEWALERT) {
|
|
ViewAlert (hWnd) ;
|
|
} else {
|
|
bPrepareMenu = FALSE ;
|
|
ToolbarDepressButton (hWndToolbar, AlertTool, TRUE) ;
|
|
}
|
|
break ;
|
|
|
|
case IDM_VIEWLOG:
|
|
if (iPerfmonView != IDM_VIEWLOG) {
|
|
ViewLog (hWnd) ;
|
|
} else {
|
|
bPrepareMenu = FALSE ;
|
|
ToolbarDepressButton (hWndToolbar, LogTool, TRUE) ;
|
|
}
|
|
break ;
|
|
|
|
case IDM_VIEWREPORT:
|
|
if (iPerfmonView != IDM_VIEWREPORT) {
|
|
ViewReport (hWnd) ;
|
|
} else {
|
|
bPrepareMenu = FALSE ;
|
|
ToolbarDepressButton (hWndToolbar, ReportTool, TRUE) ;
|
|
}
|
|
break ;
|
|
|
|
|
|
//=============================//
|
|
// "Options" Commands //
|
|
//=============================//
|
|
|
|
|
|
case IDM_OPTIONSCHART:
|
|
DialogBox(hInstance, idDlgChartOptions, hWnd, GraphOptionDlg);
|
|
break;
|
|
|
|
case IDM_OPTIONSALERT:
|
|
DisplayAlertOptions (hWnd, hWndAlert) ;
|
|
break;
|
|
|
|
case IDM_OPTIONSLOG:
|
|
DisplayLogOptions (hWnd, hWndLog) ;
|
|
break ;
|
|
|
|
case IDM_OPTIONSREPORT:
|
|
if (!PlayingBackLog())
|
|
DisplayReportOptions (hWnd, hWndReport) ;
|
|
break ;
|
|
|
|
case IDM_OPTIONSBOOKMARK:
|
|
bPrepareMenu = FALSE ;
|
|
AddBookmark (hWnd) ;
|
|
break;
|
|
|
|
#ifdef KEEP_DISPLAY_OPTION
|
|
case IDM_OPTIONSDISPLAY:
|
|
DisplayDisplayOptions (hWnd) ;
|
|
break ;
|
|
#endif
|
|
|
|
case IDM_OPTIONSDISPLAYMENU:
|
|
// ShowPerfmonMenu will update Options.bMenubar..
|
|
ShowPerfmonMenu (!Options.bMenubar) ;
|
|
break ;
|
|
|
|
case IDM_OPTIONSDISPLAYTOOL:
|
|
Options.bToolbar = !Options.bToolbar ;
|
|
SizePerfmonComponents () ;
|
|
break ;
|
|
|
|
case IDM_OPTIONSDISPLAYSTATUS:
|
|
Options.bStatusbar = !Options.bStatusbar ;
|
|
SizePerfmonComponents () ;
|
|
break ;
|
|
|
|
case IDM_OPTIONSDISPLAYONTOP:
|
|
Options.bAlwaysOnTop = !Options.bAlwaysOnTop ;
|
|
WindowSetTopmost (hWndMain, Options.bAlwaysOnTop) ;
|
|
break ;
|
|
|
|
case IDM_OPTIONSDATASOURCE:
|
|
DisplayDataSourceOptions (hWnd) ;
|
|
break ;
|
|
|
|
#ifdef KEEP_MANUALREFRESH
|
|
case IDM_OPTIONSMANUALREFRESH:
|
|
bPrepareMenu = FALSE ;
|
|
if (!PlayingBackLog())
|
|
ToggleRefresh (hWnd) ;
|
|
break ;
|
|
#endif
|
|
|
|
case IDM_OPTIONSREFRESHNOWCHART:
|
|
bPrepareMenu = FALSE ;
|
|
if (!PlayingBackLog())
|
|
GraphTimer (hWndGraph, TRUE) ;
|
|
break ;
|
|
|
|
case IDM_OPTIONSREFRESHNOWALERT:
|
|
bPrepareMenu = FALSE ;
|
|
if (!PlayingBackLog())
|
|
AlertTimer (hWndAlert, TRUE) ;
|
|
break ;
|
|
|
|
case IDM_OPTIONSREFRESHNOWLOG:
|
|
bPrepareMenu = FALSE ;
|
|
if (!PlayingBackLog())
|
|
LogTimer (hWndLog, TRUE) ;
|
|
break ;
|
|
|
|
case IDM_OPTIONSREFRESHNOWREPORT:
|
|
bPrepareMenu = FALSE ;
|
|
if (!PlayingBackLog())
|
|
ReportTimer (hWndReport, TRUE) ;
|
|
break ;
|
|
|
|
case IDM_OPTIONSLEGENDONOFF:
|
|
bPrepareMenu = FALSE ;
|
|
if (iPerfmonView == IDM_VIEWCHART) {
|
|
pGraphs->gOptions.bLegendChecked =
|
|
!pGraphs->gOptions.bLegendChecked ;
|
|
SizeGraphComponents (hWndGraph) ;
|
|
WindowInvalidate (hWndGraph) ;
|
|
} else if (iPerfmonView == IDM_VIEWALERT) {
|
|
PALERT pAlert = AlertData (hWnd) ;
|
|
|
|
pAlert->bLegendOn = !pAlert->bLegendOn ;
|
|
|
|
SizeAlertComponents (hWndAlert) ;
|
|
WindowInvalidate (hWndAlert) ;
|
|
}
|
|
break ;
|
|
|
|
//=============================//
|
|
// "Help" Commands //
|
|
//=============================//
|
|
|
|
|
|
case IDM_HELPABOUT:
|
|
{
|
|
TCHAR szApplication [WindowCaptionLen] ;
|
|
|
|
bPrepareMenu = FALSE ;
|
|
|
|
if (GetKeyState(VK_SHIFT) < 0 && GetKeyState(VK_CONTROL) < 0) {
|
|
DialogBox (hInstance, idDlgAbout, hWndMain, AboutDlgProc) ;
|
|
} else {
|
|
StringLoad (IDS_APPNAME, szApplication) ;
|
|
ShellAbout (hWnd, szApplication, NULL, hIcon) ;
|
|
}
|
|
}
|
|
break ;
|
|
|
|
//======================================//
|
|
// Generic messages from ACCELERATORS //
|
|
//======================================//
|
|
case IDM_FILEOPENFILE:
|
|
bPrepareMenu = FALSE ;
|
|
switch (iPerfmonView) {
|
|
case IDM_VIEWCHART:
|
|
SendMessage (hWnd, WM_COMMAND, IDM_FILEOPENCHART, lParam) ;
|
|
break ;
|
|
|
|
case IDM_VIEWALERT:
|
|
SendMessage (hWnd, WM_COMMAND, IDM_FILEOPENALERT, lParam) ;
|
|
break ;
|
|
|
|
case IDM_VIEWLOG:
|
|
SendMessage (hWnd, WM_COMMAND, IDM_FILEOPENLOG, lParam) ;
|
|
break ;
|
|
|
|
case IDM_VIEWREPORT:
|
|
SendMessage (hWnd, WM_COMMAND, IDM_FILEOPENREPORT, lParam) ;
|
|
break ;
|
|
}
|
|
break ;
|
|
|
|
case IDM_FILESAVEFILE:
|
|
bPrepareMenu = FALSE ;
|
|
switch (iPerfmonView) {
|
|
case IDM_VIEWCHART:
|
|
SendMessage (hWnd, WM_COMMAND, IDM_FILESAVECHART, lParam) ;
|
|
break ;
|
|
|
|
case IDM_VIEWALERT:
|
|
SendMessage (hWnd, WM_COMMAND, IDM_FILESAVEALERT, lParam) ;
|
|
break ;
|
|
|
|
case IDM_VIEWLOG:
|
|
SendMessage (hWnd, WM_COMMAND, IDM_FILESAVELOG, lParam) ;
|
|
break ;
|
|
|
|
case IDM_VIEWREPORT:
|
|
SendMessage (hWnd, WM_COMMAND, IDM_FILESAVEREPORT, lParam) ;
|
|
break ;
|
|
}
|
|
break ;
|
|
|
|
case IDM_FILESAVEASFILE:
|
|
bPrepareMenu = FALSE ;
|
|
switch (iPerfmonView) {
|
|
case IDM_VIEWCHART:
|
|
SendMessage (hWnd, WM_COMMAND, IDM_FILESAVEASCHART, lParam) ;
|
|
break ;
|
|
|
|
case IDM_VIEWALERT:
|
|
SendMessage (hWnd, WM_COMMAND, IDM_FILESAVEASALERT, lParam) ;
|
|
break ;
|
|
|
|
case IDM_VIEWLOG:
|
|
SendMessage (hWnd, WM_COMMAND, IDM_FILESAVEASLOG, lParam) ;
|
|
break ;
|
|
|
|
case IDM_VIEWREPORT:
|
|
SendMessage (hWnd, WM_COMMAND, IDM_FILESAVEASREPORT, lParam) ;
|
|
break ;
|
|
}
|
|
break ;
|
|
|
|
case IDM_CHARTHIGHLIGHTON:
|
|
bPrepareMenu = FALSE ;
|
|
if (iPerfmonView == IDM_VIEWCHART) {
|
|
ChartHighlight () ;
|
|
}
|
|
break ;
|
|
|
|
case IDM_TOOLBARID:
|
|
// msg from the toolbar control
|
|
bPrepareMenu = FALSE ;
|
|
OnToolbarHit (wParam, lParam) ;
|
|
break ;
|
|
|
|
case IDM_HELPCONTENTS:
|
|
{
|
|
TCHAR NullStr [2] ;
|
|
|
|
NullStr[0] = TEXT('\0') ;
|
|
bPrepareMenu = FALSE ;
|
|
if (*pszHelpFile != 0) {
|
|
WinHelp (hWndMain, pszHelpFile, HELP_FINDER, (DWORD_PTR)(NullStr)) ;
|
|
} else {
|
|
DlgErrorBox (hWnd, ERR_HELP_NOT_AVAILABLE);
|
|
}
|
|
}
|
|
break ;
|
|
|
|
case IDM_HELPSEARCH:
|
|
{
|
|
TCHAR NullStr [2] ;
|
|
|
|
NullStr[0] = TEXT('\0') ;
|
|
bPrepareMenu = FALSE ;
|
|
if (*pszHelpFile != 0) {
|
|
WinHelp (hWndMain, pszHelpFile, HELP_PARTIALKEY, (DWORD_PTR)(NullStr)) ;
|
|
} else {
|
|
DlgErrorBox (hWnd, ERR_HELP_NOT_AVAILABLE);
|
|
}
|
|
}
|
|
break ;
|
|
|
|
case IDM_HELPHELP:
|
|
{
|
|
TCHAR NullStr [2] ;
|
|
|
|
NullStr[0] = TEXT('\0') ;
|
|
bPrepareMenu = FALSE ;
|
|
if (*pszHelpFile != 0) {
|
|
WinHelp (hWndMain, pszHelpFile, HELP_HELPONHELP, (DWORD_PTR)(NullStr)) ;
|
|
} else {
|
|
DlgErrorBox (hWnd, ERR_HELP_NOT_AVAILABLE);
|
|
}
|
|
}
|
|
break ;
|
|
|
|
default:
|
|
return (FALSE) ;
|
|
}
|
|
|
|
if (bPrepareMenu) {
|
|
PrepareMenu (GetMenu (hWnd)) ;
|
|
}
|
|
|
|
return (TRUE) ;
|
|
}
|
|
|
|
|
|
|
|
void
|
|
PrepareMenu (
|
|
HMENU hMenu
|
|
)
|
|
{
|
|
BOOL bPlayingLog ;
|
|
BOOL bCurrentLine = FALSE;
|
|
BOOL bManualRefresh = FALSE;
|
|
BOOL bLogCollecting ;
|
|
BOOL bRefresh ;
|
|
|
|
// hMenu is NULL when the menu bar display option is off.
|
|
// In that case, we still have to enable/disable all tool buttons
|
|
// So, I have commented out the next 2 lines...
|
|
// if (!hMenu)
|
|
// return ;
|
|
|
|
bLogCollecting = LogCollecting (hWndLog) ;
|
|
bPlayingLog = PlayingBackLog () ;
|
|
|
|
switch (iPerfmonView) {
|
|
case IDM_VIEWCHART:
|
|
bCurrentLine = (CurrentGraphLine (hWndGraph) != NULL) ;
|
|
bRefresh = GraphRefresh (hWndGraph) ;
|
|
bManualRefresh = !bPlayingLog && bCurrentLine ;
|
|
if (hMenu) {
|
|
MenuCheck (hMenu, IDM_VIEWCHART, TRUE) ;
|
|
MenuEnableItem (hMenu, IDM_FILEEXPORTCHART, bCurrentLine) ;
|
|
MenuEnableItem (hMenu, IDM_EDITMODIFYCHART, bCurrentLine) ;
|
|
MenuEnableItem (hMenu, IDM_EDITDELETECHART, bCurrentLine) ;
|
|
MenuEnableItem (hMenu, IDM_OPTIONSREFRESHNOWCHART, bManualRefresh) ;
|
|
MenuEnableItem (hMenu, IDM_EDITCLEARCHART, !bPlayingLog && bCurrentLine) ;
|
|
}
|
|
break ;
|
|
|
|
case IDM_VIEWALERT:
|
|
bCurrentLine = (CurrentAlertLine (hWndAlert) != NULL) ;
|
|
bRefresh = AlertRefresh (hWndAlert) ;
|
|
bManualRefresh = !bPlayingLog && bCurrentLine ;
|
|
if (hMenu) {
|
|
MenuCheck (hMenu, IDM_VIEWALERT, TRUE) ;
|
|
MenuEnableItem (hMenu, IDM_FILEEXPORTALERT, bCurrentLine) ;
|
|
MenuEnableItem (hMenu, IDM_EDITMODIFYALERT, bCurrentLine) ;
|
|
MenuEnableItem (hMenu, IDM_EDITDELETEALERT, bCurrentLine) ;
|
|
MenuEnableItem (hMenu, IDM_EDITCLEARALERT, !bPlayingLog && bCurrentLine) ;
|
|
MenuEnableItem (hMenu, IDM_OPTIONSREFRESHNOWALERT, bManualRefresh) ;
|
|
}
|
|
break ;
|
|
|
|
case IDM_VIEWLOG:
|
|
bCurrentLine = AnyLogLine() ;
|
|
bRefresh = LogRefresh (hWndLog) ;
|
|
bManualRefresh = !bPlayingLog && bLogCollecting ;
|
|
if (hMenu) {
|
|
MenuCheck (hMenu, IDM_VIEWLOG, TRUE) ;
|
|
MenuEnableItem (hMenu, IDM_FILEEXPORTLOG, bCurrentLine) ;
|
|
MenuEnableItem (hMenu, IDM_EDITDELETELOG, bCurrentLine) ;
|
|
MenuEnableItem (hMenu, IDM_OPTIONSREFRESHNOWLOG , bManualRefresh) ;
|
|
}
|
|
break ;
|
|
|
|
case IDM_VIEWREPORT:
|
|
bCurrentLine = CurrentReportItem (hWndReport) ;
|
|
bRefresh = ReportRefresh (hWndReport) ;
|
|
bManualRefresh = !bPlayingLog && bCurrentLine ;
|
|
if (hMenu) {
|
|
MenuCheck (hMenu, IDM_VIEWREPORT, TRUE) ;
|
|
MenuEnableItem (hMenu, IDM_FILEEXPORTREPORT, bCurrentLine) ;
|
|
MenuEnableItem (hMenu, IDM_EDITMODIFYREPORT, FALSE) ;
|
|
MenuEnableItem (hMenu, IDM_EDITDELETEREPORT, bCurrentLine) ;
|
|
MenuEnableItem (hMenu, IDM_EDITCLEARREPORT, !bPlayingLog && bCurrentLine) ;
|
|
MenuEnableItem (hMenu, IDM_OPTIONSREFRESHNOWREPORT, bManualRefresh) ;
|
|
}
|
|
break ;
|
|
}
|
|
|
|
ToolbarEnableButton (hWndToolbar, EditTool,
|
|
bCurrentLine &&
|
|
(iPerfmonView != IDM_VIEWREPORT &&
|
|
iPerfmonView != IDM_VIEWLOG)) ;
|
|
|
|
ToolbarEnableButton (hWndToolbar, DeleteTool, bCurrentLine) ;
|
|
|
|
ToolbarEnableButton (hWndToolbar, RefreshTool, bManualRefresh) ;
|
|
|
|
// None of the alert or report options make sense when playing back a log.
|
|
#if 0
|
|
ToolbarEnableButton (hWndToolbar,
|
|
OptionsTool,
|
|
!bPlayingLog ||
|
|
(iPerfmonView != IDM_VIEWREPORT &&
|
|
iPerfmonView != IDM_VIEWALERT)) ;
|
|
#endif
|
|
ToolbarEnableButton (hWndToolbar,
|
|
OptionsTool,
|
|
!bPlayingLog ||
|
|
iPerfmonView != IDM_VIEWREPORT) ;
|
|
|
|
ToolbarEnableButton (hWndToolbar, BookmarkTool, bLogCollecting) ;
|
|
|
|
|
|
if (hMenu) {
|
|
// MenuEnableItem (hMenu, IDM_OPTIONSMANUALREFRESH, !bPlayingLog) ;
|
|
// MenuCheck (hMenu, IDM_OPTIONSMANUALREFRESH, bRefresh) ;
|
|
MenuEnableItem (hMenu, IDM_EDITTIMEWINDOW, bPlayingLog) ;
|
|
// MenuEnableItem (hMenu, IDM_OPTIONSALERT, !bPlayingLog) ;
|
|
MenuEnableItem (hMenu, IDM_OPTIONSREPORT, !bPlayingLog) ;
|
|
MenuEnableItem (hMenu, IDM_OPTIONSBOOKMARK, bLogCollecting) ;
|
|
|
|
// check/uncheck all the display options
|
|
MenuCheck (hMenu, IDM_OPTIONSDISPLAYMENU, Options.bMenubar) ;
|
|
MenuCheck (hMenu, IDM_OPTIONSDISPLAYTOOL, Options.bToolbar) ;
|
|
MenuCheck (hMenu, IDM_OPTIONSDISPLAYSTATUS, Options.bStatusbar) ;
|
|
MenuCheck (hMenu, IDM_OPTIONSDISPLAYONTOP, Options.bAlwaysOnTop) ;
|
|
}
|
|
}
|