/*++ Copyright (C) 1996-1999 Microsoft Corporation Module Name: legend.h Abstract: Header file for the legend control. --*/ #ifndef _LEGEND_H_ #define _LEGEND_H_ #include #include "toolbar.h" // include here to define _WIN32_IE #define iLabelLen 30 #define iLegendNumCols 7 #define LEGEND_DATA_VERSION 2 class CSysmonControl; typedef struct LEGENDCOLSTRUCT { INT32 xWidth ; INT32 xPos ; INT32 iOrientation ; } LEGENDCOL ; typedef LEGENDCOL *PLEGENDCOL ; typedef struct { INT32 xColWidth[iLegendNumCols]; INT32 iSortCol; INT32 iSortDir; } LEGEND_DATA; class CLegend { friend LRESULT APIENTRY GraphLegendWndProc (HWND hWnd, UINT uiMsg, WPARAM wParam, LPARAM lParam); friend LRESULT APIENTRY HdrWndProc (HWND hWnd, UINT uiMsg, WPARAM wParam, LPARAM lParam); private: CSysmonControl *m_pCtrl; HWND m_hWnd; RECT m_Rect; HWND m_hWndItems ; HWND m_hWndHeader ; WNDPROC m_DefaultWndProc; HFONT m_hFontItems ; HFONT m_hFontLabels ; INT m_xMinWidth ; INT m_yHeaderHeight ; INT m_yItemHeight ; INT m_iNumItemsVisible ; INT m_xEllipses; INT m_iSortCol; INT m_iSortDir; BOOL m_fLoaded; LEGENDCOL m_aCols [iLegendNumCols] ; DOUBLE* m_parrColWidthFraction ; class CGraphItem *m_pCurrentItem ; BOOL m_fMetafile; void DrawLabels ( HDC hDC ) ; void DrawColorCol ( PCGraphItem pItem, INT iCol, HDC hDC, HDC hAttribDC, INT yPos) ; void DrawCol ( INT iCol, HDC hDC, HDC hAttribDC, INT yPos, LPCWSTR lpszValue) ; void DrawItem ( PCGraphItem pItem, INT yPos, HDC hDC, HDC hAttribDC) ; void DrawColHeader ( INT iCol, HDC hDC, HDC hAttribDC, RECT& rRect, BOOL bItemState ) ; void DrawHeader ( HDC hDC, HDC hAttribDC, RECT& rRect ) ; void OnPaint ( void ); void OnDrawItem ( LPDRAWITEMSTRUCT lpDI ) ; void OnDrawHeader ( LPDRAWITEMSTRUCT lpDI ) ; void OnMeasureItem ( LPMEASUREITEMSTRUCT lpMI ) ; void OnDblClick ( void ) ; void OnSelectionChanged ( void ) ; void OnColumnWidthChanged ( HD_NOTIFY *phdn ); void OnColumnClicked( HD_NOTIFY *phdn ); void AdjustColumnWidths ( INT iCol = 0 ); INT GetItemIndex ( PCGraphItem pItem ) ; LPCWSTR GetSortKey ( PCGraphItem pItem ) ; HRESULT GetNextValue ( WCHAR*& pszNext, DOUBLE& rdValue ); public: CLegend ( void ); ~CLegend ( void ); HRESULT LoadFromStream ( LPSTREAM pIStream ); HRESULT SaveToStream ( LPSTREAM pIStream ); HRESULT SaveToPropertyBag ( IPropertyBag*, BOOL fClearDirty, BOOL fSaveAllProps ); HRESULT LoadFromPropertyBag ( IPropertyBag*, IErrorLog* ); void Render ( HDC hDC, HDC hAttribDC, BOOL fMetafile, BOOL fEntire, LPRECT pRect ); void ChangeFont ( HDC hDC ); BOOL Init ( CSysmonControl *pCtrl, HWND hWndParent ) ; INT MinHeight ( INT yMaxHeight ) ; INT Height ( INT yMaxHeight ) ; INT MinWidth ( void ) ; void SizeComponents ( LPRECT pRect); BOOL AddItem ( PCGraphItem pItem ) ; void DeleteItem ( PCGraphItem pItem ) ; BOOL SelectItem ( PCGraphItem pItem ); void Clear ( void ) ; PCGraphItem CurrentItem ( void ) ; HWND Window ( void ) ; }; typedef CLegend *PLEGEND; #endif