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

142 lines
4 KiB
C++

// cmponent.h : Declaration of CMyComputerComponent
#ifndef __CMPONENT_H_INCLUDED__
#define __CMPONENT_H_INCLUDED__
#include "stdcmpnt.h" // CComponent
#include "cookie.h" // CMyComputerCookie
#include "persist.h" // PersistStream
// forward declarations
class CMyComputerComponentData;
class CMyComputerComponent :
public CComponent
, public IMyComputer
, public IExtendContextMenu
, public PersistStream
{
public:
CMyComputerComponent();
virtual ~CMyComputerComponent();
BEGIN_COM_MAP(CMyComputerComponent)
COM_INTERFACE_ENTRY(IMyComputer)
COM_INTERFACE_ENTRY(IExtendContextMenu)
COM_INTERFACE_ENTRY(IPersistStream)
COM_INTERFACE_ENTRY_CHAIN(CComponent)
END_COM_MAP()
#if DBG==1
ULONG InternalAddRef()
{
return CComObjectRoot::InternalAddRef();
}
ULONG InternalRelease()
{
return CComObjectRoot::InternalRelease();
}
int dbg_InstID;
#endif // DBG==1
// IFileServiceMgmt
// IComponent implemented in CComponent
HRESULT OnViewChange (LPDATAOBJECT pDataObject, LPARAM data, LPARAM hint);
STDMETHOD(GetResultViewType)(MMC_COOKIE cookie, LPOLESTR* ppViewType, long* pViewOptions);
// IExtendContextMenu
STDMETHOD(AddMenuItems)(
IDataObject* piDataObject,
IContextMenuCallback* piCallback,
long* pInsertionAllowed);
STDMETHOD(Command)(
LONG lCommandID,
IDataObject* piDataObject );
void ExpandAndSelect( MyComputerObjectType objecttype );
void LaunchWelcomeApp();
// IPersistStream
HRESULT STDMETHODCALLTYPE GetClassID(CLSID __RPC_FAR *pClassID)
{
*pClassID=CLSID_MyComputer;
return S_OK;
}
HRESULT STDMETHODCALLTYPE Load(IStream __RPC_FAR *pStg);
HRESULT STDMETHODCALLTYPE Save(IStream __RPC_FAR *pStgSave, BOOL fSameAsLoad);
// support methods for IComponent
virtual HRESULT OnNotifySelect( LPDATAOBJECT lpDataObject, BOOL fSelected );
virtual HRESULT ReleaseAll();
virtual HRESULT Show(CCookie* pcookie, LPARAM arg, HSCOPEITEM hScopeItem);
virtual HRESULT OnNotifyAddImages( LPDATAOBJECT lpDataObject,
LPIMAGELIST lpImageList,
HSCOPEITEM hSelectedItem );
virtual HRESULT OnNotifySnapinHelp (LPDATAOBJECT pDataObject);
HRESULT PopulateListbox(CMyComputerCookie* pcookie);
// HRESULT PopulateServices(CMyComputerCookie* pcookie);
// HRESULT AddServiceItems(CMyComputerCookie* pParentCookie, ENUM_SERVICE_STATUS * rgESS, DWORD nDataItems);
// HRESULT EnumerateScopeChildren(CMyComputerCookie* pParentCookie, HSCOPEITEM hParent);
// HRESULT LoadIcons();
static HRESULT LoadStrings();
HRESULT LoadColumns( CMyComputerCookie* pcookie );
// support methods for IPersistStream
enum // Bit fields for m_dwFlagsPersist
{
// mskfFirst = 0x0001
};
DWORD m_dwFlagsPersist; // General-purpose flags to be persisted into .msc file
void SetPersistentFlags(DWORD dwFlags)
{
m_dwFlagsPersist = dwFlags;
}
DWORD GetPersistentFlags()
{
return m_dwFlagsPersist;
}
CMyComputerComponentData& QueryComponentDataRef()
{
return (CMyComputerComponentData&)QueryBaseComponentDataRef();
}
public:
LPCONTROLBAR m_pControlbar; // CODEWORK should use smartpointer
LPTOOLBAR m_pSvcMgmtToolbar; // CODEWORK should use smartpointer
LPTOOLBAR m_pMyComputerToolbar; // CODEWORK should use smartpointer
CMyComputerCookie* m_pViewedCookie; // CODEWORK I hate to have to do this...
static const GUID m_ObjectTypeGUIDs[MYCOMPUT_NUMTYPES];
static const BSTR m_ObjectTypeStrings[MYCOMPUT_NUMTYPES];
private:
bool m_bForcingGetResultType;
}; // class CMyComputerComponent
// Enumeration for the icons used
enum
{
iIconComputer = 0, // Root of the snapin
iIconComputerFail, // Root of the snapin when we cannot connect to the computer
iIconSystemTools, // System Tools
iIconStorage, // Storage
iIconServerApps, // Server Applications
iIconLast // Must be last
};
typedef enum _COLNUM_COMPUTER {
COLNUM_COMPUTER_NAME = 0
} COLNUM_ROOT;
HRESULT LoadIconsIntoImageList(LPIMAGELIST pImageList, BOOL fLoadLargeIcons);
#endif // ~__CMPONENT_H_INCLUDED__