153 lines
3.8 KiB
C++
153 lines
3.8 KiB
C++
//////////////////////////////////////////////////////////////////////////////
|
|
/*++
|
|
|
|
Copyright (C) Microsoft Corporation, 1997 - 2000
|
|
|
|
Module Name:
|
|
|
|
Component.h
|
|
|
|
Abstract:
|
|
|
|
The CComponent class implements several interfaces which MMC uses:
|
|
|
|
The IComponent interface is basically how MMC talks to the snap-in
|
|
to get it to implement a right-hand-side "scope" pane. There can be several
|
|
objects implementing this interface instantiated at once. These are best
|
|
thought of as "views" on the single object implementing the IComponentData
|
|
"document" (see ComponentData.cpp).
|
|
|
|
The IExtendPropertySheet interface is how the snap-in adds property sheets
|
|
for any of the items a user might click on.
|
|
|
|
The IExtendContextMenu interface what we do to add custom entries
|
|
to the menu which appears when a user right-clicks on a node.
|
|
|
|
The IExtendControlBar interface allows us to support a custom
|
|
iconic toolbar.
|
|
|
|
See Component.cpp for implementation details.
|
|
|
|
Note:
|
|
|
|
Much of the functionality of this class is implemented in atlsnap.h
|
|
by IComponentImpl. We are mostly overriding here.
|
|
|
|
|
|
Revision History:
|
|
mmaguire 11/6/97 - created using MMC snap-in wizard
|
|
|
|
|
|
--*/
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
#if !defined(_NAP_COMPONENT_H_)
|
|
#define _NAP_COMPONENT_H_
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
// BEGIN INCLUDES
|
|
//
|
|
// where we can find what this class derives from:
|
|
//
|
|
//Moved to Precompiled.h: #include <atlsnap.h>
|
|
//
|
|
//
|
|
// where we can find what this class has or uses:
|
|
//
|
|
#include "ComponentData.h"
|
|
//
|
|
// END INCLUDES
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
class CComponent :
|
|
public CComObjectRootEx<CComSingleThreadModel>
|
|
, public CSnapInObjectRoot<2, CComponentData>
|
|
, public IExtendPropertySheetImpl<CComponent>
|
|
, public IExtendContextMenuImpl<CComponent>
|
|
, public IExtendControlbarImpl<CComponent>
|
|
, public IResultDataCompare
|
|
, public IExtendTaskPadImpl<CComponent>
|
|
, public IComponentImpl<CComponent>
|
|
{
|
|
|
|
public:
|
|
|
|
BEGIN_COM_MAP(CComponent)
|
|
COM_INTERFACE_ENTRY(IComponent)
|
|
COM_INTERFACE_ENTRY(IExtendPropertySheet2)
|
|
COM_INTERFACE_ENTRY(IExtendContextMenu)
|
|
COM_INTERFACE_ENTRY(IExtendControlbar)
|
|
COM_INTERFACE_ENTRY(IResultDataCompare)
|
|
COM_INTERFACE_ENTRY(IExtendTaskPad)
|
|
END_COM_MAP()
|
|
|
|
CComponent();
|
|
|
|
~CComponent();
|
|
|
|
// We are overiding ATLsnap.h's IComponentImpl implementation of this
|
|
// in order to correctly handle messages which it is incorrectly
|
|
// ignoring (e.g. MMCN_COLUMN_CLICK and MMCN_SNAPINHELP)
|
|
|
|
STDMETHOD(Notify)(
|
|
LPDATAOBJECT lpDataObject
|
|
, MMC_NOTIFY_TYPE event
|
|
, LPARAM arg
|
|
, LPARAM param
|
|
);
|
|
|
|
STDMETHOD(CompareObjects)(
|
|
LPDATAOBJECT lpDataObjectA
|
|
, LPDATAOBJECT lpDataObjectB
|
|
);
|
|
|
|
// IResultDataCompare
|
|
STDMETHOD(Compare)(LPARAM lUserParam,
|
|
MMC_COOKIE cookieA,
|
|
MMC_COOKIE cookieB,
|
|
int *pnResult);
|
|
|
|
// IExtendPropertySheet2 -- to support wizard 97
|
|
STDMETHOD(GetWatermarks)(
|
|
LPDATAOBJECT lpIDataObject,
|
|
HBITMAP *lphWatermark,
|
|
HBITMAP *lphHeader,
|
|
HPALETTE *lphPalette,
|
|
BOOL *bStretch);
|
|
|
|
CSnapInItem * m_pSelectedNode;
|
|
|
|
protected:
|
|
|
|
virtual HRESULT OnColumnClick(
|
|
LPARAM arg
|
|
, LPARAM param
|
|
);
|
|
|
|
virtual HRESULT OnViewChange(
|
|
LPARAM arg
|
|
, LPARAM param
|
|
);
|
|
|
|
virtual HRESULT OnPropertyChange(
|
|
LPARAM arg
|
|
, LPARAM param
|
|
);
|
|
|
|
virtual HRESULT OnAddImages(
|
|
LPARAM arg
|
|
, LPARAM param
|
|
);
|
|
|
|
// html help
|
|
HRESULT OnResultContextHelp(LPDATAOBJECT lpDataObject);
|
|
|
|
public:
|
|
int m_nLastClickedColumn;
|
|
DWORD m_dwLastSortOptions;
|
|
};
|
|
|
|
|
|
#endif // _NAP_COMPONENT_H_
|