windows-nt/Source/XPSP1/NT/base/wmi/bmoflocparser/inc/locutil/fielddef.h
2020-09-26 16:20:57 +08:00

210 lines
6.4 KiB
C++

//******************************************************************************
//
// FieldDef.h: Common Column Definitions
// Copyright (C) 1994-1997 Microsoft Corporation
// All rights reserved.
//
//******************************************************************************
#pragma once
#pragma warning(disable:4275) // Exported classes
//------------------------------------------------------------------------------
struct LTAPIENTRY COLUMN_STRING_ENTRY
{
// Construction
public:
COLUMN_STRING_ENTRY();
COLUMN_STRING_ENTRY(const COLUMN_STRING_ENTRY & entry);
// Data
public:
CLString st; // Display String
long nID; // User value (unique ID)
// Operations
public:
const COLUMN_STRING_ENTRY & operator=(const COLUMN_STRING_ENTRY & entry);
};
typedef CArray<COLUMN_STRING_ENTRY, COLUMN_STRING_ENTRY&> CColStrEntryArray;
//------------------------------------------------------------------------------
class LTAPIENTRY CColumnStrList : public CLocThingList<COLUMN_STRING_ENTRY>
{
// Operations
public:
BOOL FindDisplayName(long nID, CLString & stName) const;
BOOL FindID(const CLString &stName,long &nID) const;
};
// RAID: LS42 Bug 46 fixed by MikeL
// Pointer to a function to allow each column
// type to have its own validation function.
typedef BOOL (* PFNVALIDATE) (LPCTSTR, DWORD);
// RAID: LS42 Bug 46 fixed by MikeL
// Added m_pfnValidateFunc to allow each column
// type to have its own validation function.
//------------------------------------------------------------------------------
class LTAPIENTRY CColumnDefinition : public CRefCount
{
public:
CColumnDefinition(const WCHAR * pszInternalName, long nID,
const CLString &strName, const CLString &strHelp,
CColumnVal::ColumnValType vt, Operators ops,
BOOL fDisplayable, BOOL fSortable, BOOL fReadOnly,
PFNVALIDATE pfnValidateFunc);
void SetStringList(const CColumnStrList & lstColumnStr);
const CPascalString & GetInternalName() const;
long GetID() const;
const CLString & GetDisplayName() const;
const CLString & GetHelpText() const;
BOOL IsDisplayable() const;
BOOL IsSortable() const;
BOOL IsReadOnly() const;
CColumnVal::ColumnValType GetColumnType() const;
Operators GetOperators() const;
const CColumnStrList & GetStringList() const;
BOOL Validate (LPCTSTR lpsz, DWORD dw) const;
private:
CPascalString m_pasInternalName; // Unique String ID
long m_nID; // Unique Number ID (can be any number)
CLString m_strDisplayName; // Displayed name
CLString m_strHelpText; // Description of column
CColumnVal::ColumnValType m_vt; // Type of data
Operators m_ops; // Valid filtering operations
BOOL m_fDisplayable; // Column is displayable
BOOL m_fSortable; // Column is sortable
BOOL m_fReadOnly; // Column is read-only
PFNVALIDATE m_pfnValidateFunc; // Pointer to column value validation func
CColumnStrList m_lstColumnStr;
};
//------------------------------------------------------------------------------
// CEnumIntoColStrList provides a method of enumerating directly into a list of
// COLUMN_STRING_ENTRY's.
//
class LTAPIENTRY CEnumIntoColStrList : public CEnumCallback
{
// Construction
public:
CEnumIntoColStrList(CColumnStrList & lstColStr, BOOL fLock = TRUE);
~CEnumIntoColStrList();
// CEnumCallback implementation
public:
virtual BOOL ProcessEnum(const EnumInfo &);
protected:
CColumnStrList & m_lstColStr;
BOOL m_fLock; // Lock list when finished
};
//------------------------------------------------------------------------------
class LTAPIENTRY CColDefUtil
{
// Operations
public:
static void FillBool(CButton * pbtn, BOOL fValue = TRUE);
static void FillBool(CListBox * plbc, BOOL fValue = TRUE, BOOL fEmpty = TRUE);
static void FillBool(CComboBox * pcbc, BOOL fValue = TRUE, BOOL fEmpty = TRUE);
static void FillStringList(CListBox * plbc, const CColumnStrList & lstColStr,
long idSelect = -1, BOOL fEmpty = TRUE);
static void FillStringList(CComboBox * pcbc, const CColumnStrList & lstColStr,
long idSelect = -1, BOOL fEmpty = TRUE);
//------------------------------------------------------------------------------
class LTAPIENTRY CColDefCB : public CObject
{
public:
virtual int AddItem(const CLString & stName, long nID);
virtual void SetCurSel(long nSelect);
virtual void FillBool(BOOL fValue = TRUE, BOOL fEmpty = TRUE);
virtual void FillStringList(const CColumnStrList & lstColStr, long idSelect = -1, BOOL fEmpty = TRUE);
virtual void Empty();
#ifdef _DEBUG
virtual void AssertValid() const;
#endif
};
//------------------------------------------------------------------------------
class LTAPIENTRY CCheckBoxCB : public CColDefCB
{
public:
CCheckBoxCB(CButton * pbtn);
virtual void FillBool(BOOL fValue = TRUE, BOOL fEmpty = TRUE);
#ifdef _DEBUG
virtual void AssertValid() const;
#endif
protected:
CButton * const m_pbtn;
};
//------------------------------------------------------------------------------
class LTAPIENTRY CListBoxCB : public CColDefCB
{
public:
CListBoxCB(CListBox * plbc);
virtual int AddItem(const CLString & stName, long nID);
virtual void SetCurSel(long nSelect);
virtual void FillBool(BOOL fValue = TRUE, BOOL fEmpty = TRUE);
virtual void FillStringList(const CColumnStrList & lstColStr, long idSelect = -1, BOOL fEmpty = TRUE);
virtual void Empty();
#ifdef _DEBUG
virtual void AssertValid() const;
#endif
protected:
CListBox * const m_plbc;
};
//------------------------------------------------------------------------------
class LTAPIENTRY CComboBoxCB : public CColDefCB
{
public:
CComboBoxCB(CComboBox * pcbc);
virtual int AddItem(const CLString & stName, long nID);
virtual void SetCurSel(long nSelect);
virtual void FillBool(BOOL fValue = TRUE, BOOL fEmpty = TRUE);
virtual void FillStringList(const CColumnStrList & lstColStr, long idSelect = -1, BOOL fEmpty = TRUE);
virtual void Empty();
#ifdef _DEBUG
virtual void AssertValid() const;
#endif
protected:
CComboBox * const m_pcbc;
};
};
LTAPIENTRY int AddListBoxItem(CListBox * plbc, const CLString & stAdd, DWORD dwItemData);
LTAPIENTRY int AddComboBoxItem(CComboBox * pcbc, const CLString & stAdd, DWORD dwItemData);
LTAPIENTRY int AddListBoxItem(CListBox * plbc, HINSTANCE hDll, UINT nStringID, DWORD dwItemData);
LTAPIENTRY int AddComboBoxItem(CComboBox * pcbc, HINSTANCE hDll, UINT nStringID, DWORD dwItemData);
LTAPIENTRY void GetBoolValue(BOOL fValue, CLString & stValue);
#pragma warning(default:4275) // Exported classes