/*======================================================================================// | 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, 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_