205 lines
7.8 KiB
C++
205 lines
7.8 KiB
C++
//+---------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation 1996-2001.
|
|
//
|
|
// File: ddwarn.h
|
|
//
|
|
// Contents: definition of CDlgDependencyWarn
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
#if !defined(AFX_DDWARN_H__A405CAFD_800F_11D2_812B_00C04FD92F7B__INCLUDED_)
|
|
#define AFX_DDWARN_H__A405CAFD_800F_11D2_812B_00C04FD92F7B__INCLUDED_
|
|
|
|
#if _MSC_VER > 1000
|
|
#pragma once
|
|
#endif // _MSC_VER > 1000
|
|
|
|
#include "HelpDlg.h"
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CDlgDependencyWarn dialog
|
|
//
|
|
// DPCHECK_OPERATOR tells how to compare the values.
|
|
//
|
|
enum DPCHECK_OPERATOR
|
|
{
|
|
DPCHECK_CONFIGURED = 1, // The dependent item must be configured.
|
|
// A default value must be specifide for the suggested item.
|
|
DPCHECK_NOTCONFIGURED, // The dependent item must be not configured,
|
|
// (only valid if the item itsel if not configured).
|
|
DPCHECK_LESSEQUAL, // The dependent item must be less than or equal.
|
|
DPCHECK_LESS, // The dependent item must be less than.
|
|
DPCHECK_GREATEREQUAL, // The dependent item must be greater than or eqaul.
|
|
DPCHECK_GREATER, // The dependent item must be greater.
|
|
|
|
//The next two case are special cases for retention Method
|
|
|
|
DPCHECK_RETENTION_METHOD_CONFIGURED, // The dependent item must be configured
|
|
DPCHECK_RETENTION_METHOD_NOTCONFIGURED, // The dependent item must not be configured
|
|
|
|
//The next two case are special cases for Retain *** Log for
|
|
DPCHECK_RETAIN_FOR_CONFIGURED, //The dependent item must be configured
|
|
DPCHECK_RETAIN_FOR_NOTCONFIGURED, //The dependent item must not be configured
|
|
};
|
|
|
|
//
|
|
// Flags for Depenecy checking.
|
|
// value is set to the items value.
|
|
// DPCHECK_VALIDFOR_NC - The test is valid for not configured [uDepends] items,
|
|
// by default checks are not valid for not configured items.
|
|
// DPCHECK_FOREVER - The item can be configured for FOREVER
|
|
// DPCHECK_NEVER - Treat configured to never (0) as not configured
|
|
// DPCHECK_INVERSE - Conversion is done by devision not multiplication.
|
|
// seconds - days would be an inverse where
|
|
//
|
|
#define DPCHECK_VALIDFOR_NC 0x10000000
|
|
#define DPCHECK_FOREVER 0x20000000
|
|
#define DPCHECK_INVERSE 0x40000000
|
|
#define DPCHECK_NEVER 0x80000000
|
|
|
|
//
|
|
// Used for creating a dependency list. For it to work correctly you must
|
|
// create the list so that
|
|
// uID - is a valid ID for the result item you are checking
|
|
// uDepends - is a valid ID for a result item in the same Folder.
|
|
// uDependencyCount - is the total dependencies for this item.
|
|
// uDefault - Only used if uOpFlags has DPCHECK_CONFIGURED
|
|
// uOpFlags - The test you want to perform and any other special flags.
|
|
// The low order word is the operation to perform.
|
|
// The high order word is used for special flags.
|
|
//
|
|
typedef struct _tag_DEPENDENCYLIST
|
|
{
|
|
UINT uID; // The ID we are checking
|
|
UINT uDepends; // The ID of the dependent item.
|
|
UINT uDependencyCount; // The number of sequential dependencies.
|
|
UINT uDefault; // The default value to use if there are no good values.
|
|
UINT uConversion; // Conversion number. The dependent values are converted
|
|
// items value.
|
|
UINT uOpFlags; // What kind of check to perfrom and other flags.
|
|
} DEPENDENCYLIST, *PDEPENDENCYLIST;
|
|
|
|
|
|
//
|
|
// Min max information for the dependency checks.
|
|
//
|
|
typedef struct _tag_DEPENDENCYMINMAX
|
|
{
|
|
UINT uID; // The ID of the item.
|
|
UINT uMin; // Minimum value.
|
|
UINT uMax; // Maximum value.
|
|
UINT uInc; // Increment value.
|
|
} DEPENDENCYMINMAX, *PDEPENDENCYMINMAX;
|
|
|
|
//
|
|
// This structure will be created by the Dependency check, The caller can
|
|
// enumerate through the dialog failed list to see which items failed.
|
|
// The [dwSuggested] member will be set to the value that should be set for the
|
|
// [pResult] item.
|
|
// GetFailedCount() - Returns number of items that failed the dependency check
|
|
// GetFailedInfo(int i) - Returns a pointer to this structure.
|
|
//
|
|
typedef struct _tag_DEPENDENCYFAILED
|
|
{
|
|
const DEPENDENCYLIST *pList; // The attributes of the item
|
|
CResult *pResult; // The CResult associated with this item.
|
|
LONG_PTR dwSuggested; // The suggested setting for this value.
|
|
|
|
}DEPENDENCYFAILED, *PDEPENDENCYFAILED;
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////
|
|
// CDlgDependencyWarn Class declaration.
|
|
// Usage: First call CheckDendencies with some valid values. If CheckDendencies returns
|
|
// ERROR_MORE_DATA, then [m_aFailedList] has failed items. If you want to display the
|
|
// information to the user you can call DoModal() for the dialog box. DoModal will return
|
|
// IDOK if the user presses 'Auto set' or IDCANCEL if the user presses Cancel. You
|
|
// can then enumerate through the failed list through a for loop with the count of
|
|
// dependecies returned by GetFailedCount(), then get each failed item by calling
|
|
// GetFailedInfo() which returns a PDEPENDENCYFAILED item.
|
|
//
|
|
class CDlgDependencyWarn : public CHelpDialog
|
|
{
|
|
// Construction
|
|
public:
|
|
CDlgDependencyWarn(CWnd* pParent = NULL); // standard constructor
|
|
virtual ~CDlgDependencyWarn(); // Destructor
|
|
|
|
DWORD
|
|
InitializeDependencies(
|
|
CSnapin *pSnapin, // The snapin who owns the CResult item.
|
|
CResult *pResult, // The CResult item we are checking
|
|
PDEPENDENCYLIST pList = NULL,
|
|
int iCount = 0
|
|
);
|
|
|
|
DWORD
|
|
CheckDependencies(
|
|
DWORD dwValue // The value we are checking.
|
|
);
|
|
|
|
CResult *
|
|
GetResultItem(
|
|
CResult *pBase, // Need this to find the CFolder container
|
|
UINT uID // The ID to search for.
|
|
);
|
|
|
|
const PDEPENDENCYFAILED
|
|
GetFailedInfo(int i) // Get a specifide failed dependcies.
|
|
{ return m_aFailedList[i]; };
|
|
int
|
|
GetFailedCount() //
|
|
{ return (int)m_aFailedList.GetSize(); };
|
|
|
|
BOOL
|
|
GetResultItemString(
|
|
CString &str,
|
|
int iCol,
|
|
CResult *pResult,
|
|
LONG_PTR dwValue = NULL
|
|
);
|
|
// Dialog Data
|
|
//{{AFX_DATA(CDlgDependencyWarn)
|
|
enum { IDD = IDD_WARNING_DIALOG };
|
|
// NOTE: the ClassWizard will add data members here
|
|
//}}AFX_DATA
|
|
|
|
|
|
|
|
// Overrides
|
|
// ClassWizard generated virtual function overrides
|
|
//{{AFX_VIRTUAL(CDlgDependencyWarn)
|
|
protected:
|
|
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
|
//}}AFX_VIRTUAL
|
|
|
|
// Implementation
|
|
protected:
|
|
|
|
// Generated message map functions
|
|
//{{AFX_MSG(CDlgDependencyWarn)
|
|
virtual BOOL OnInitDialog();
|
|
//}}AFX_MSG
|
|
DECLARE_MESSAGE_MAP()
|
|
|
|
CImageList m_imgList;
|
|
CTypedPtrArray< CPtrArray, PDEPENDENCYFAILED> m_aFailedList;
|
|
CTypedPtrArray< CPtrArray, CResult *> m_aDependsList;
|
|
LONG_PTR m_dwValue;
|
|
CResult *m_pResult;
|
|
CSnapin *m_pSnapin;
|
|
PDEPENDENCYLIST m_pList;
|
|
int m_iCount;
|
|
|
|
public:
|
|
static DEPENDENCYMINMAX m_aMinMaxInfo[];
|
|
static const DEPENDENCYMINMAX *LookupMinMaxInfo(UINT uID);
|
|
};
|
|
|
|
//{{AFX_INSERT_LOCATION}}
|
|
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
|
|
|
|
#endif // !defined(AFX_DDWARN_H__A405CAFD_800F_11D2_812B_00C04FD92F7B__INCLUDED_)
|
|
|