142 lines
4 KiB
C++
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__
|