|
|
/*++
Copyright (C) 1996-1999 Microsoft Corporation
Module Name:
ctrprop.h
Abstract:
Header file for the counter date property page
--*/
#ifndef _CTRPROP_H_
#define _CTRPROP_H_
#include "smonprop.h"
#include "visuals.h"
// Property Page Dialog IDs
#define IDD_CTR_PROPP_DLG 200
#define IDC_CTRLIST 201
#define IDC_ADDCTR 202
#define IDC_DELCTR 203
#define IDC_ADDCTR_TEXT 204
#define IDC_LINECOLOR 205
#define IDC_LINESCALE 206
#define IDC_LINEWIDTH 207
#define IDC_LINESTYLE 208
#define IDC_LABEL_LINECOLOR 209
#define IDC_LABEL_LINESCALE 210
#define IDC_LABEL_LINEWIDTH 211
#define IDC_LABEL_LINESTYLE 212
typedef struct _ItemProps { // Combo box indices
INT iColorIndex; INT iStyleIndex; INT iScaleIndex; INT iWidthIndex; // Custom color
COLORREF rgbColor; } ItemProps;
typedef struct _ItemInfo { struct _ItemInfo * pNextInfo; ICounterItem * pItem; LPTSTR pszPath; BOOL fLoaded:1, fChanged:1, fAdded:1; ItemProps Props; PPDH_COUNTER_PATH_ELEMENTS pCounter; } ItemInfo, *PItemInfo;
class CCounterPropPage : public CSysmonPropPage { friend static HRESULT AddCallback ( LPTSTR pszPathName, DWORD_PTR lpUserData, DWORD dwFlags );
public: CCounterPropPage(void); virtual ~CCounterPropPage(void);
protected: virtual BOOL GetProperties(void); //Read current options
virtual BOOL SetProperties(void); //Set new options
virtual void DeinitControls(void); // Deinitialize dialog controls
virtual void DialogItemChange(WORD wId, WORD wMsg); // Handle item change
virtual void MeasureItem(PMEASUREITEMSTRUCT); // Handle user measure req
virtual void DrawItem(PDRAWITEMSTRUCT); // Handle user draw req
virtual HRESULT EditPropertyImpl( DISPID dispID); // Set focus to control
private:
void DeleteInfo(PItemInfo pInfo); void SetStyleComboEnable(); // Enable/disable based on current width value
void InitDialog(void); void AddCounters(void); HRESULT NewItem(LPTSTR pszPath, DWORD dwFlags); INT AddItemToList(PItemInfo pInfo); void DeleteItem(); void LoadItemProps(PItemInfo pInfo); void DisplayItemProps(PItemInfo pInfo); void SelectItem(INT iItem); INT SelectMatchingItem(INT iColor, COLORREF rgbCustomColor, INT iWidth, INT iStyle);
INT ScaleFactorToIndex ( INT iScaleFactor ); INT IndexToScaleFactor ( INT iScaleIndex );
void IncrementLocalVisuals ( void ); void SetModifiedSelectedVisuals ( BOOL bModified = TRUE ) { m_bAreModSelectedVisuals = bModified; }; BOOL AreModifiedSelectedVisuals ( void ){ return m_bAreModSelectedVisuals; };
private: PItemInfo m_pInfoSel; PItemInfo m_pInfoDeleted; ItemProps m_props; INT m_iAddIndex; DWORD m_dwMaxHorizListExtent; BOOL m_bAreModSelectedVisuals;
PDH_BROWSE_DLG_CONFIG m_BrowseInfo;
enum eValueRange { eHashTableSize = 257 }; typedef struct _HASH_ENTRY { struct _HASH_ENTRY* pNext; PPDH_COUNTER_PATH_ELEMENTS pCounter; } HASH_ENTRY, *PHASH_ENTRY;
PHASH_ENTRY m_HashTable[257]; BOOL m_fHashTableSetup;
ULONG HashCounter ( LPTSTR szCounterName ); public:
BOOL RemoveCounterFromHashTable( LPTSTR pszPath, PPDH_COUNTER_PATH_ELEMENTS pCounter); void InitializeHashTable( void ); void ClearCountersHashTable ( void ); DWORD InsertCounterToHashTable ( LPTSTR pszPath, PPDH_COUNTER_PATH_ELEMENTS* ppCounter );
}; typedef CCounterPropPage *PCCounterPropPage;
DEFINE_GUID(CLSID_CounterPropPage, 0xcf948561, 0xede8, 0x11ce, 0x94, 0x1e, 0x0, 0x80, 0x29, 0x0, 0x43, 0x47);
#endif //_CTRPROP_H_
|