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

248 lines
6.7 KiB
C++

/*++
Module Name:
DfsScope.h
Abstract:
This module contains the declaration for CDfsSnapinScopeManager.
This class implements IComponentData and other related interfaces
--*/
#ifndef __DFSSCOPE_H_
#define __DFSSCOPE_H_
#include "resource.h" // main symbols
#include "MMCAdmin.h" // For CMMCDfsAdmin
/////////////////////////////////////////////////////////////////////////////
// CDfsSnapinScopeManager
class ATL_NO_VTABLE CDfsSnapinScopeManager :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CDfsSnapinScopeManager, &CLSID_DfsSnapinScopeManager>,
public IComponentData,
public IExtendContextMenu,
public IPersistStream,
public ISnapinAbout,
public ISnapinHelp2,
public IExtendPropertySheet2
{
public:
//DECLARE_REGISTRY_RESOURCEID(IDR_DFSSNAPINSCOPEMANAGER)
static HRESULT UpdateRegistry(BOOL bRegister);
BEGIN_COM_MAP(CDfsSnapinScopeManager)
COM_INTERFACE_ENTRY(IComponentData)
COM_INTERFACE_ENTRY(IExtendContextMenu)
COM_INTERFACE_ENTRY(IPersistStream)
COM_INTERFACE_ENTRY(ISnapinAbout)
COM_INTERFACE_ENTRY(ISnapinHelp2)
COM_INTERFACE_ENTRY(IExtendPropertySheet2)
END_COM_MAP()
CDfsSnapinScopeManager();
virtual ~CDfsSnapinScopeManager();
//IComponentData Methods
STDMETHOD(Initialize)(
IN LPUNKNOWN i_pUnknown
);
STDMETHOD(CreateComponent)(
OUT LPCOMPONENT* o_ppComponent
);
STDMETHOD(Notify)(
IN LPDATAOBJECT i_lpDataObject,
IN MMC_NOTIFY_TYPE i_Event,
IN LPARAM i_lArg,
IN LPARAM i_lParam
);
STDMETHOD(Destroy)();
STDMETHOD(QueryDataObject)(
IN MMC_COOKIE i_lCookie,
IN DATA_OBJECT_TYPES i_DataObjectType,
OUT LPDATAOBJECT* o_ppDataObject
);
STDMETHOD(GetDisplayInfo)(
IN OUT SCOPEDATAITEM* io_pScopeDataItem
);
STDMETHOD(CompareObjects)(
IN LPDATAOBJECT lpDataObjectA,
IN LPDATAOBJECT lpDataObjectB
);
// IExtendContextMenu methods. Definition in ICtxMenu.cpp
STDMETHOD (AddMenuItems)(
IN LPDATAOBJECT i_lpDataObject,
IN LPCONTEXTMENUCALLBACK i_lpContextMenuCallback,
IN LPLONG i_lpInsertionAllowed
);
STDMETHOD (Command)(
IN LONG i_lCommandID,
IN LPDATAOBJECT i_lpDataObject
);
// IPersistStream Implementation
STDMETHOD (GetClassID)(
OUT struct _GUID* o_pClsid
);
// Use to check if the object has been changed since last save
STDMETHOD (IsDirty)(
);
// Use to load the snap-in from a saved file
STDMETHOD (Load)(
IN LPSTREAM i_pStream
);
// Use to save the snap-in to a file
STDMETHOD (Save)(
OUT LPSTREAM o_pStream,
IN BOOL i_bClearDirty
);
STDMETHOD (GetSizeMax)(
OUT ULARGE_INTEGER* o_pulSize
);
// ISnapinAbout methods
STDMETHOD (GetSnapinDescription)(
OUT LPOLESTR* o_lpszDescription
);
STDMETHOD (GetProvider)(
OUT LPOLESTR* o_lpszName
);
STDMETHOD (GetSnapinVersion)(
OUT LPOLESTR* o_lpszVersion
);
STDMETHOD (GetSnapinImage)(
OUT HICON* o_hSnapIcon
);
STDMETHOD (GetStaticFolderImage)(
OUT HBITMAP* o_hSmallImage,
OUT HBITMAP* o_hSmallImageOpen,
OUT HBITMAP* o_hLargeImage,
OUT COLORREF* o_cMask
);
// ISnapinHelp2
STDMETHOD (GetHelpTopic)(
OUT LPOLESTR* o_lpszCompiledHelpFile
);
STDMETHOD (GetLinkedTopics)(
OUT LPOLESTR* o_lpszCompiledHelpFiles
);
// IExtendPropertySheet
// Called to create the pages
STDMETHOD (CreatePropertyPages)(
IN LPPROPERTYSHEETCALLBACK i_lpPropSheetProvider,
IN LONG_PTR i_lhandle,
IN LPDATAOBJECT i_lpIDataObject
);
// Called to check, if the snapin was to display the pages
STDMETHOD (QueryPagesFor)(
IN LPDATAOBJECT i_lpIDataObject
);
// Called to get water mar images for property pages.
STDMETHOD (GetWatermarks)(
IN LPDATAOBJECT pDataObject,
IN HBITMAP* lphWatermark,
IN HBITMAP* lphHeader,
IN HPALETTE* lphPalette,
IN BOOL* bStretch
);
// Utility functions
public:
// Get the Display Object from the IDataObject
STDMETHOD(GetDisplayObject)(
IN LPDATAOBJECT i_lpDataObject,
OUT CMmcDisplay** o_ppMmcDisplay
);
private:
// Handle the notify event for MMCN_EXPAND
STDMETHOD(DoNotifyExpand)(
IN LPDATAOBJECT i_lpDataObject,
IN BOOL i_bExpanding,
IN HSCOPEITEM i_hParent
);
// Handled the notify event for MMCN_DELETE
STDMETHOD(DoNotifyDelete)(
IN LPDATAOBJECT i_lpDataObject
);
// Handle the notify for MMCN_PROPERTY_CHANGE
STDMETHOD(DoNotifyPropertyChange)(
IN LPDATAOBJECT i_lpDataObject,
IN LPARAM i_lparam
);
// Handle the command line parameters
STDMETHOD(HandleCommandLineParameters)(
);
// Read a particular field from the version information block.
STDMETHOD(ReadFieldFromVersionInfo)(
IN LPTSTR i_lpszField,
OUT LPOLESTR* o_lpszFieldValue
);
protected:
CMmcDfsAdmin* m_pMmcDfsAdmin; // The Class used for display and for dfsroot list.
CComPtr<IConsoleNameSpace> m_pScope; // Pointer to the Scope Pane.
CComPtr<IConsole2> m_pConsole; // Pointer to the Console.
HBITMAP m_hLargeBitmap;
HBITMAP m_hSmallBitmap;
HBITMAP m_hSmallBitmapOpen;
HICON m_hSnapinIcon;
};
#endif //__DFSSCOPE_H_