|
|
/*======================================================================================//
| Process Control //
| //
|Copyright (c) 1998 Sequent Computer Systems, Incorporated. All rights reserved. //
| //
|File Name: Component.h //
| //
|Description: Class definition for CComponent, implements IComponent interface //
| //
|Created: Paul Skoglund 07-1998 //
| //
|Rev History: //
| //
|=======================================================================================*/
/////////////////////////////////////////////////////////////////////////////
// CComponent: CComponent handles interactions with the result pane. MMC
// calls the IComponent interfaces.
//
// This is a part of the MMC SDK.
// Copyright (C) 1997 Microsoft Corporation
// All rights reserved.
//
// This source code is only intended as a supplement to the
// MMC SDK Reference and related
// electronic documentation provided with the library.
// See these sources for detailed information regarding the
// MMC Library product.
//
#ifndef __COMPONENT_H_
#define __COMPONENT_H_
#include "Globals.h"
#include "ComponentData.h"
/////////////////////////////////////////////////////////////////////////////
// CComponent
class ATL_NO_VTABLE CComponent : public CComObjectRootEx<CComSingleThreadModel>, public IComponent, #ifdef USE_IRESULTDATACOMPARE
public IResultDataCompare, #endif
public IExtendContextMenu, public IExtendPropertySheet2 { public: CComponent(); ~CComponent();
DECLARE_NOT_AGGREGATABLE(CComponent)
BEGIN_COM_MAP(CComponent) COM_INTERFACE_ENTRY(IComponent) #ifdef USE_IRESULTDATACOMPARE
COM_INTERFACE_ENTRY(IResultDataCompare) #endif
COM_INTERFACE_ENTRY(IExtendContextMenu) COM_INTERFACE_ENTRY(IExtendPropertySheet2) END_COM_MAP()
// IComponent interface methods
public: STDMETHOD(Initialize)(LPCONSOLE ipConsole); STDMETHOD(Notify)(LPDATAOBJECT ipDataObject, MMC_NOTIFY_TYPE Event, LPARAM Arg, LPARAM Param); STDMETHOD(Destroy)(MMC_COOKIE cookie); STDMETHOD(GetResultViewType)(MMC_COOKIE cookie, LPOLESTR* ppViewType, long* pViewOptions); STDMETHOD(QueryDataObject)(MMC_COOKIE cookie, DATA_OBJECT_TYPES type, LPDATAOBJECT* ppDataObject); STDMETHOD(GetDisplayInfo)(RESULTDATAITEM* pResultDataItem); STDMETHOD(CompareObjects)(LPDATAOBJECT ipDataObjectA, LPDATAOBJECT ipDataObjectB);
#ifdef USE_IRESULTDATACOMPARE
// IResultDataCompare
public: STDMETHOD(Compare) (LPARAM lUserParam, MMC_COOKIE cookieA, MMC_COOKIE cookieB, int * pnResult ); #endif
// IExtendContextMenu
public: STDMETHOD(AddMenuItems)( LPDATAOBJECT ipDataObject, LPCONTEXTMENUCALLBACK pCallback, long *pInsertionAllowed); STDMETHOD(Command)(long nCommandID, LPDATAOBJECT ipDataObject);
// IExtendPropertySheet2
public: STDMETHOD(CreatePropertyPages)( LPPROPERTYSHEETCALLBACK lpProvider, LONG_PTR handle, LPDATAOBJECT ipDataObject ); STDMETHOD(QueryPagesFor)(LPDATAOBJECT ipDataObject); STDMETHOD(GetWatermarks)(LPDATAOBJECT ipDataObject, HBITMAP * lphWatermark, HBITMAP * lphHeader, HPALETTE * lphPalette, BOOL* bStretch);
public: void SetComponentData(CComponentData* pCompData);
private: IConsole2* m_ipConsole2; // MMC interface to console
IHeaderCtrl2* m_ipHeaderCtrl2; // MMC interface to header control
IResultData* m_ipResultData; // MMC interface to result data
IConsoleVerb* m_ipConsoleVerb; // MMC interface to console verb
IConsoleNameSpace2* m_ipConsoleNameSpace2; // MMC interface to console name space
IDisplayHelp* m_ipDisplayHelp; // MMC interface to display help
CComponentData* m_pCompData; // Parent scope pane object
HBITMAP m_hbmp16x16; HBITMAP m_hbmp32x32;
HSCOPEITEM m_hSelectedScope; // handle to selected scopeitem or null if nothing selected...
BOOL m_bInitializedAndNotDestroyed;
private: HRESULT OnShow(LPDATAOBJECT ipDataObject, BOOL bSelected, HSCOPEITEM hID); HRESULT OnSelect(LPDATAOBJECT ipDataObject, LPARAM Arg, LPARAM Param); HRESULT OnAddImages(LPDATAOBJECT ipDataObject, IImageList *ipImageList, HSCOPEITEM hID);
HRESULT OnRefresh(LPDATAOBJECT ipDataObject);
HRESULT OnPropertyChange( BOOL bScopeItem, LPARAM Param );
};
#endif //__COMPONENT_H_
|