windows-nt/Source/XPSP1/NT/admin/snapin/dsadmin/gencreat.h
2020-09-26 16:20:57 +08:00

107 lines
3.3 KiB
C++

//+-------------------------------------------------------------------------
//
// Microsoft Windows
//
// Copyright (C) Microsoft Corporation, 1997 - 1998
//
// File: gencreat.h
//
//--------------------------------------------------------------------------
/////////////////////////////////////////////////////////////////////
// gencreat.h
//
// Class definition for the "Generic Create" wizard and other dialogs.
//
// HISTORY
// 21-Aug-97 Dan Morin Creation.
//
/////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////
// The following structure is to map a attribute syntax OID to
// something that both the user and the developer better understand.
struct SCHEMA_ATTR_SYNTAX_INFO
{
LPCTSTR pszSyntaxOID; // OID of the attribute syntax (eg: "2.5.5.6")
UINT uStringIdDesc; // Resource Id describing the syntax OID. (eg: "Numerical String")
VARTYPE vtEnum; // Datatype of the attribute syntax (eg: VT_BSTR, VT_I4, VT_BOOL )
};
const SCHEMA_ATTR_SYNTAX_INFO * PFindSchemaAttrSyntaxInfo(LPCTSTR pszAttrSyntaxOID);
/////////////////////////////////////////////////////////////////////
// The following is a node in a linked-list of mandatory
// attributes to create a new object.
class CMandatoryADsAttribute
{
public:
CString m_strAttrName; // Name of the attribute (eg: "cn", "mail", "streetAddress" )
CString m_strAttrDescription; // Description of attribute (eg: "Common Name", "Email Addresses", "Street Address")
const SCHEMA_ATTR_SYNTAX_INFO * m_pSchemaAttrSyntaxInfo; // Pointer to the syntax info for the attribute.
public:
CComVariant m_varAttrValue; // OUT: Value of the attribute stored in a variant
public:
CMandatoryADsAttribute(
LPCTSTR pszAttrName,
LPCTSTR pszAttrDesc,
LPCTSTR pszSyntaxOID)
{
m_strAttrName = pszAttrName;
m_strAttrDescription = pszAttrDesc;
m_pSchemaAttrSyntaxInfo = PFindSchemaAttrSyntaxInfo(pszSyntaxOID);
ASSERT(m_pSchemaAttrSyntaxInfo != NULL);
}
~CMandatoryADsAttribute()
{
}
}; // CMandatoryADsAttribute
class CMandatoryADsAttributeList :
public CList< CMandatoryADsAttribute*, CMandatoryADsAttribute* >
{
public:
~CMandatoryADsAttributeList()
{
_RemoveAll();
}
private:
void _RemoveAll()
{
while(!IsEmpty())
delete RemoveHead();
}
};
/////////////////////////////////////////////////////////////////////
// The "Generic Create" wizard will build a list of attributes
// and prompt the user to enter the value of the attribute.
class CCreateNewObjectGenericWizard
{
friend class CGenericCreateWizPage;
protected:
CNewADsObjectCreateInfo * m_pNewADsObjectCreateInfo; // INOUT: Temporary storage to hold the attributes
LPCTSTR m_pszObjectClass; // IN: Class of object to create.
CPropertySheet * m_paPropertySheet; // Property sheet holding all the property pages
int m_cMandatoryAttributes; // Number of attributes in the list
CMandatoryADsAttributeList* m_paMandatoryAttributeList; // list of mandatory attributes
public:
CCreateNewObjectGenericWizard();
~CCreateNewObjectGenericWizard();
BOOL FDoModal(INOUT CNewADsObjectCreateInfo * pNewADsObjectCreateInfo);
protected:
CGenericCreateWizPage** m_pPageArr;
}; // CCreateNewObjectGenericWizard