windows-nt/Source/XPSP1/NT/admin/controls/smonctrl/statbar.h
2020-09-26 16:20:57 +08:00

98 lines
2.1 KiB
C++

/*++
Copyright (C) 1996-1999 Microsoft Corporation
Module Name:
statbar.h
Abstract:
<abstract>
--*/
#ifndef _STATBAR_H_
#define _STATBAR_H_
#define SZ_HRTIME_FORMAT TEXT("%1d%s%02d%s%02d")
#define SZ_MINTIME_FORMAT TEXT("%1d%s%02d")
#define SZ_DAYTIME_FORMAT TEXT("%1dD %1d%s%02d")
#define E_MEDIUM_VALUE 999999.999
#define E_LARGE_VALUE 9999999999.0
#define E_TOO_LARGE_VALUE 1.0E+20
#define SZ_VALUE_TOO_HIGH TEXT("+ + + +")
#define SZ_VALUE_TOO_LOW TEXT("- - - -")
#define LABEL_MARGIN 12
#define VALUE_MARGIN 4
#define RECT_BORDER 1
#define LINE_SPACING (2 * RECT_BORDER + 4)
#define STAT_LAST 0
#define STAT_AVG 1
#define STAT_MIN 2
#define STAT_MAX 3
#define STAT_TIME 4
#define STAT_ITEM_CNT 5
// Structure for one item
typedef struct _STAT_ITEM {
INT xPos ;
INT yPos ;
INT xLabelWidth;
double dNewValue;
double dValue ;
INT iInitialized ;
DWORD dwCounterType;
} STAT_ITEM, *PSTAT_ITEM ;
class CSysmonControl;
class CGraphItem;
class CStatsBar
{
private:
enum eStatFormat {
eMinimumWidth = 10,
eSmallPrecision = 3,
eMediumPrecision = 0,
eLargePrecision = 4,
eIntegerPrecision = 0
};
void DrawValues (HDC hDC, BOOL bForce);
CSysmonControl *m_pCtrl;
STAT_ITEM m_StatItem[STAT_ITEM_CNT];
RECT m_Rect;
INT m_iFontHeight;
INT m_iValueWidth;
PCGraphItem m_pGraphItemToInit;
public:
CStatsBar (void);
~CStatsBar (void);
BOOL Init (CSysmonControl *pCtrl, HWND hWnd);
void SizeComponents(LPRECT pRect);
void SetTimeSpan(double dSeconds);
INT Height (INT iMaxHeight, INT iMaxWidth);
void ChangeFont(HDC hDC);
void Draw (HDC hDC, HDC hAttribDC, PRECT prcUpdate);
void Update(HDC hDC, CGraphItem* pGraphItem);
void Clear( void );
void GetUpdateRect( PRECT pRect ) { *pRect = m_Rect; }
};
typedef CStatsBar *PSTATSBAR;
#endif // _STATBAR_H_