|
|
//
// cmponent.h : Declaration of Component.
//
// This COM object is primarily concerned with
// the result pane items.
//
// Cory West <[email protected]>
// Copyright (c) Microsoft Corporation 1997
//
#ifndef __CMPONENT_H_INCLUDED__
#define __CMPONENT_H_INCLUDED__
#include "stdcmpnt.h" // CComponent
#include "cookie.h" // Cookie
class ComponentData; class AttributeGeneralPage;
class Component : public CComponent, public IExtendPropertySheet, public IExtendContextMenu, public IResultDataCompare {
public:
friend class AttributeGeneralPage;
Component(); virtual ~Component();
BEGIN_COM_MAP(Component) COM_INTERFACE_ENTRY(IExtendContextMenu) COM_INTERFACE_ENTRY(IExtendPropertySheet) COM_INTERFACE_ENTRY(IResultDataCompare) COM_INTERFACE_ENTRY_CHAIN(CComponent) END_COM_MAP()
#if DBG==1
ULONG InternalAddRef( ) { return CComObjectRoot::InternalAddRef(); }
ULONG InternalRelease( ) { return CComObjectRoot::InternalRelease(); }
int dbg_InstID;
#endif
inline Cookie* ActiveCookie( CCookie* pBaseCookie ) { return ( Cookie*)ActiveBaseCookie( pBaseCookie ); }
//
// Support methods for IComponent.
//
// For Error handling, overide GetResultViewType()
STDMETHOD(GetResultViewType)(MMC_COOKIE cookie, LPOLESTR* ppViewType, long* pViewOptions);
virtual HRESULT ReleaseAll(); virtual HRESULT OnViewChange( LPDATAOBJECT lpDataObject, LPARAM data, LPARAM hint ); virtual HRESULT OnNotifySelect( LPDATAOBJECT lpDataObject, BOOL fSelected ); virtual HRESULT Show( CCookie* pcookie, LPARAM arg, HSCOPEITEM hScopeItem); virtual HRESULT OnNotifyAddImages( LPDATAOBJECT lpDataObject, LPIMAGELIST lpImageList, HSCOPEITEM hSelectedItem ); virtual HRESULT OnNotifyDelete(LPDATAOBJECT lpDataObject);
HRESULT PopulateListbox( Cookie* pcookie ); HRESULT EnumerateScopeChildren( Cookie* pParentCookie, HSCOPEITEM hParent );
HRESULT LoadColumns( Cookie* pcookie );
ComponentData& QueryComponentDataRef( ) { return ( ComponentData& )QueryBaseComponentDataRef(); }
//
// IExtendPropertySheet
//
STDMETHOD(CreatePropertyPages)( LPPROPERTYSHEETCALLBACK pCall, LONG_PTR handle, LPDATAOBJECT pDataObject );
STDMETHOD(QueryPagesFor)( LPDATAOBJECT pDataObject );
//
// IExtendContextMenu
//
STDMETHOD(AddMenuItems)( LPDATAOBJECT piDataObject, LPCONTEXTMENUCALLBACK piCallback, long *pInsertionAllowed );
STDMETHOD(Command)( long lCommandID, LPDATAOBJECT piDataObject );
//
// IResultDataCompare
//
virtual HRESULT __stdcall Compare( LPARAM userParam, MMC_COOKIE cookieA, MMC_COOKIE cookieB, int* result);
//
// Creates result items for the Attributes folder.
//
HRESULT FastInsertAttributeResultCookies( Cookie* pParentCookie );
//
// Creates result items for a particular class.
//
HRESULT Component::FastInsertClassAttributesResults( Cookie* pClassCookie );
HRESULT Component::RecursiveDisplayClassAttributesResults( Cookie *pParentCookie, SchemaObject* pObject, CStringList& szProcessedList );
HRESULT Component::ProcessResultList( Cookie *pParentCookie, ListEntry *pList, BOOLEAN fOptional, BOOLEAN fSystem, SchemaObject* pSrcObject );
virtual HRESULT OnNotifySnapinHelp (LPDATAOBJECT pDataObject); virtual HRESULT OnNotifyContextHelp (LPDATAOBJECT pDataObject);
private:
HRESULT DeleteAttribute(Cookie* pcookie);
//
// These should use smart pointers.
//
LPCONTROLBAR m_pControlbar; LPTOOLBAR m_pSvcMgmtToolbar; LPTOOLBAR m_pSchmMgmtToolbar; Cookie* m_pViewedCookie; static const GUID m_ObjectTypeGUIDs[SCHMMGMT_NUMTYPES]; static const BSTR m_ObjectTypeStrings[SCHMMGMT_NUMTYPES];
};
//
// Enumeration for the icons used. The icons are loaded into
// MMC via ComponentData::LoadIcons.
//
enum { iIconGeneric = 0, iIconFolder, iIconClass, iIconAttribute, iIconDisplaySpecifier, iIconLast };
//
// These enums give us readable names for the column ordinals
// of the columns in various result views.
//
typedef enum _COLNUM_CLASS { COLNUM_CLASS_NAME=0, COLNUM_CLASS_TYPE, COLNUM_CLASS_STATUS, COLNUM_CLASS_DESCRIPTION } COLNUM_CLASS;
typedef enum _COLNUM_ATTRIBUTE { COLNUM_ATTRIBUTE_NAME=0, COLNUM_ATTRIBUTE_TYPE, COLNUM_ATTRIBUTE_STATUS, COLNUM_ATTRIBUTE_SYSTEM, COLNUM_ATTRIBUTE_DESCRIPTION, COLNUM_ATTRIBUTE_PARENT } COLNUM_ATTRIBUTE;
typedef enum _COLNUM_ROOT { COLNUM_SCHEMA_NAME = 0 } COLNUM_ROOT;
HRESULT LoadIconsIntoImageList(LPIMAGELIST pImageList, BOOL fLoadLargeIcons);
#endif
|