windows-nt/Source/XPSP1/NT/net/ias/mmc/common/snapinnode.h
2020-09-26 16:20:57 +08:00

280 lines
8.2 KiB
C++

//////////////////////////////////////////////////////////////////////////////
/*++
Copyright (C) Microsoft Corporation, 1997 - 1999
Module Name:
SnapinNode.h
Abstract:
Header for the CSnapinNode class.
This is our virtual base class for an MMC Snap-in node.
As this is a template class and is all implemented inline,
there is no SnapinNode.cpp for implementation.
Author:
Michael A. Maguire 11/6/97
Revision History:
mmaguire 11/6/97 - created using MMC snap-in wizard
mmaguire 12/15/97 - made into template class
--*/
//////////////////////////////////////////////////////////////////////////////
#if !defined(_SNAPIN_NODE_H_)
#define _SNAPIN_NODE_H_
//////////////////////////////////////////////////////////////////////////////
// BEGIN INCLUDES
//
// where we can find what this class derives from:
//
// Moved to Precompiled files: #include <atlsnap.h>
//
//
// where we can find what this class has or uses:
//
//
// END INCLUDES
//////////////////////////////////////////////////////////////////////////////
//class CComponentData;
template <class T, class TComponentData, class TComponent>
class CSnapinNode : public CSnapInItemImpl< T >
{
protected:
// Constructor/Destructor
CSnapinNode(CSnapInItem * pParentNode, unsigned int helpIndex = 0);
~CSnapinNode();
public:
// For IDataObject handling.
IDataObject* m_pDataObject;
void InitDataClass(IDataObject* pDataObject, CSnapInItem* pDefault);
// Clipboard formats which IDataObjects on all MMC nodes must support.
static const GUID* m_NODETYPE;
static const TCHAR* m_SZNODETYPE;
static const TCHAR* m_SZDISPLAY_NAME;
static const CLSID* m_SNAPIN_CLASSID;
// Pointer to parent node. This is passed in the call to our
// constructor. Needed so that a node can access its parent.
// For example, when we receive the MMCN_DELETE notification, we might tell
// our parent node to remove us from its list of children.
CSnapInItem * m_pParentNode;
protected:
// Allows us access to snapin-global data.
virtual TComponentData * GetComponentData( void ) = 0;
public:
// Standard MMC functionality -- override if you need to.
STDMETHOD(CreatePropertyPages)(
LPPROPERTYSHEETCALLBACK lpProvider
, LONG_PTR handle
, IUnknown* pUnk
, DATA_OBJECT_TYPES type
);
STDMETHOD(QueryPagesFor)( DATA_OBJECT_TYPES type );
void* GetDisplayName();
STDMETHOD(GetScopePaneInfo)( SCOPEDATAITEM *pScopeDataItem );
STDMETHOD(GetResultPaneInfo)( RESULTDATAITEM *pResultDataItem );
virtual LPOLESTR GetResultPaneColInfo(int nCol);
virtual HRESULT SetVerbs( IConsoleVerb * pConsoleVerb );
// Notify method will call notification handlers below -- shouldn't need to override.
STDMETHOD( Notify ) (
MMC_NOTIFY_TYPE event
, LPARAM arg
, LPARAM param
, IComponentData * pComponentData
, IComponent * pComponent
, DATA_OBJECT_TYPES type
);
// Notification handlers -- override when you want to intercept.
virtual HRESULT OnActivate(
LPARAM arg
, LPARAM param
, IComponentData * pComponentData
, IComponent * pComponent
, DATA_OBJECT_TYPES type
);
virtual HRESULT OnAddImages(
LPARAM arg
, LPARAM param
, IComponentData * pComponentData
, IComponent * pComponent
, DATA_OBJECT_TYPES type
);
virtual HRESULT OnButtonClick(
LPARAM arg
, LPARAM param
, IComponentData * pComponentData
, IComponent * pComponent
, DATA_OBJECT_TYPES type
);
virtual HRESULT OnClick(
LPARAM arg
, LPARAM param
, IComponentData * pComponentData
, IComponent * pComponent
, DATA_OBJECT_TYPES type
);
virtual HRESULT OnContextHelp(
LPARAM arg
, LPARAM param
, IComponentData * pComponentData
, IComponent * pComponent
, DATA_OBJECT_TYPES type
);
virtual HRESULT OnContextMenu(
LPARAM arg
, LPARAM param
, IComponentData * pComponentData
, IComponent * pComponent
, DATA_OBJECT_TYPES type
);
virtual HRESULT OnDoubleClick(
LPARAM arg
, LPARAM param
, IComponentData * pComponentData
, IComponent * pComponent
, DATA_OBJECT_TYPES type
);
virtual HRESULT OnDelete(
LPARAM arg
, LPARAM param
, IComponentData * pComponentData
, IComponent * pComponent
, DATA_OBJECT_TYPES type
, BOOL fSilent = FALSE
);
virtual HRESULT OnExpand(
LPARAM arg
, LPARAM param
, IComponentData * pComponentData
, IComponent * pComponent
, DATA_OBJECT_TYPES type
);
virtual HRESULT OnHelp(
LPARAM arg
, LPARAM param
, IComponentData * pComponentData
, IComponent * pComponent
, DATA_OBJECT_TYPES type
);
virtual HRESULT OnMenuButtonClick(
LPARAM arg
, LPARAM param
, IComponentData * pComponentData
, IComponent * pComponent
, DATA_OBJECT_TYPES type
);
virtual HRESULT OnMinimized(
LPARAM arg
, LPARAM param
, IComponentData * pComponentData
, IComponent * pComponent
, DATA_OBJECT_TYPES type
);
virtual HRESULT OnPaste(
LPARAM arg
, LPARAM param
, IComponentData * pComponentData
, IComponent * pComponent
, DATA_OBJECT_TYPES type
);
virtual HRESULT OnPropertyChange(
LPARAM arg
, LPARAM param
, IComponentData * pComponentData
, IComponent * pComponent
, DATA_OBJECT_TYPES type
);
virtual HRESULT OnQueryPaste(
LPARAM arg
, LPARAM param
, IComponentData * pComponentData
, IComponent * pComponent
, DATA_OBJECT_TYPES type
);
virtual HRESULT OnRefresh(
LPARAM arg
, LPARAM param
, IComponentData * pComponentData
, IComponent * pComponent
, DATA_OBJECT_TYPES type
);
virtual HRESULT OnRemoveChildren(
LPARAM arg
, LPARAM param
, IComponentData * pComponentData
, IComponent * pComponent
, DATA_OBJECT_TYPES type
);
virtual HRESULT OnRename(
LPARAM arg
, LPARAM param
, IComponentData * pComponentData
, IComponent * pComponent
, DATA_OBJECT_TYPES type
);
virtual HRESULT OnSelect(
LPARAM arg
, LPARAM param
, IComponentData * pComponentData
, IComponent * pComponent
, DATA_OBJECT_TYPES type
);
virtual HRESULT OnShow(
LPARAM arg
, LPARAM param
, IComponentData * pComponentData
, IComponent * pComponent
, DATA_OBJECT_TYPES type
);
virtual HRESULT OnViewChange(
LPARAM arg
, LPARAM param
, IComponentData * pComponentData
, IComponent * pComponent
, DATA_OBJECT_TYPES type
);
// Special notification handler -- saves off the currently selected node.
HRESULT PreOnShow(
LPARAM arg
, LPARAM param
, IComponentData * pComponentData
, IComponent * pComponent
, DATA_OBJECT_TYPES type
);
// Taskpad functionality.
STDMETHOD(TaskNotify)(
IDataObject * pDataObject
, VARIANT * pvarg
, VARIANT * pvparam
);
STDMETHOD(EnumTasks)(
IDataObject * pDataObject
, BSTR szTaskGroup
, IEnumTASK** ppEnumTASK
);
};
#endif // _SNAPIN_NODE_H_