|
|
#ifndef __COMPONET_H_
#define __COMPONET_H_
/*++
Copyright (C) Microsoft Corporation
Module Name:
componet.h
Abstract:
header file defines CComponent class
Author:
William Hsieh (williamh) created
Revision History:
--*/
class CComponent : public IComponent, public IResultDataCompare, public IExtendContextMenu, public IExtendControlbar, public IExtendPropertySheet, public IPersistStream, public ISnapinCallback { public: CComponent(CComponentData* pComponentData); ~CComponent();
//
// IUNKNOWN
//
STDMETHOD_(ULONG, AddRef)(); STDMETHOD_(ULONG, Release)(); STDMETHOD(QueryInterface)(REFIID riid, void** ppv);
public: //
// IComponent interface members
//
STDMETHOD(Initialize)(LPCONSOLE pConsole); STDMETHOD(Notify)(LPDATAOBJECT lpDataObject, MMC_NOTIFY_TYPE event, LPARAM arg, MMC_COOKIE 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 lpDataObjectA, LPDATAOBJECT lpDataObjectB);
//
// IResultDataCompare interface member
//
STDMETHOD(Compare)(LPARAM lUserParam, MMC_COOKIE cookieA, MMC_COOKIE cookieB, int* pnResult);
//
// IExtendContextMenu
//
STDMETHOD(AddMenuItems)(LPDATAOBJECT pDataObject, LPCONTEXTMENUCALLBACK pCallbackUnknown, long* pInsertionAllowed ); STDMETHOD(Command)(long nCommandID, LPDATAOBJECT pDataObject);
//
// IExtendControlbar
//
STDMETHOD(SetControlbar)(LPCONTROLBAR pControlbar); STDMETHOD(ControlbarNotify)(MMC_NOTIFY_TYPE event, LPARAM arg, LPARAM param);
//
// IExtendPropertySheet
//
STDMETHOD(CreatePropertyPages)(LPPROPERTYSHEETCALLBACK lpProvider, LONG_PTR handle, LPDATAOBJECT lpDataObject); STDMETHOD(QueryPagesFor)(LPDATAOBJECT lpDataObject);
//
// IPersistStream
//
STDMETHOD(GetClassID)(CLSID* pClassId); STDMETHOD(IsDirty)(); STDMETHOD(Load)(IStream* pStm); STDMETHOD(Save)(IStream* pStm, BOOL fClearDirty); STDMETHOD(GetSizeMax)(ULARGE_INTEGER *pcbSize);
//
// ISnapinCallback
//
STDMETHOD(tvNotify)(HWND hwndTV, MMC_COOKIE cookie, TV_NOTIFY_CODE Code, LPARAM arg, LPARAM param);
protected: HRESULT OnShow(MMC_COOKIE cookie, LPARAM arg, LPARAM param); HRESULT OnMinimize(MMC_COOKIE cookie, LPARAM arg, LPARAM param); HRESULT OnResultItemClick(MMC_COOKIE cookie, LPARAM arg, LPARAM param); HRESULT OnResultItemDblClick(MMC_COOKIE cookie, LPARAM arg, LPARAM param); HRESULT OnProperties(MMC_COOKIE cookie, LPARAM arg, LPARAM param); HRESULT OnViewChange(MMC_COOKIE cookie, LPARAM arg, LPARAM param); HRESULT OnBtnClick(MMC_COOKIE cookie, LPARAM arg, LPARAM param); HRESULT OnSelect(MMC_COOKIE cookie, LPARAM arg, LPARAM param); HRESULT OnActivate(MMC_COOKIE cookie, LPARAM arg, LPARAM param); HRESULT OnAddImages(MMC_COOKIE cookie, IImageList* pIImageList, HSCOPEITEM hScopeItem); HRESULT OnOcxNotify(MMC_NOTIFY_TYPE event, LPARAM arg, LPARAM param); HRESULT OnRestoreView(MMC_COOKIE cookie, LPARAM arg, LPARAM param); HRESULT OnContextHelp(MMC_COOKIE cookie, LPARAM arg, LPARAM param);
//
// Helper functions
//
HRESULT DoPropertySheet(MMC_COOKIE cookie);
public: void SetDirty() { m_Dirty = TRUE; } HRESULT UpdateToolbar(CCookie* pCookie); HRESULT CreateFolderList(CCookie* pCookie); CScopeItem* FindScopeItem(MMC_COOKIE cookie) { return m_pComponentData->FindScopeItem(cookie); } CCookie* GetActiveCookie(MMC_COOKIE cookie) { return m_pComponentData->GetActiveCookie(cookie); } CMachine* GetMachine() { return m_pComponentData->m_pMachine; } LPCTSTR GetStartupDeviceId() { return m_pComponentData->m_strStartupDeviceId; } LPCTSTR GetStartupCommand() { return m_pComponentData->m_strStartupCommand; } HRESULT LoadScopeIconsForResultPane(IImageList* pIImageList);
int MessageBox(LPCTSTR Msg, LPCTSTR Caption, DWORD Flags); BOOL AttachFolderToMachine(CFolder* pFolder, CMachine** ppMachine);
LPCONSOLE m_pConsole; // Console's Interface
LPHEADERCTRL m_pHeader; // Result pane's header control interface
LPRESULTDATA m_pResult; // Interface pointer to the result pane
LPCONSOLEVERB m_pConsoleVerb; LPPROPERTYSHEETPROVIDER m_pPropSheetProvider; LPDISPLAYHELP m_pDisplayHelp; LPTOOLBAR m_pToolbar; // Toolbar for view
LPCONTROLBAR m_pControlbar; // Control bar to hold toolbar
private: CFolder* FindFolder(MMC_COOKIE cookie); BOOL DestroyFolderList(MMC_COOKIE cookie); HRESULT SaveFolderPersistData(CFolder* pFolder, IStream* pStm, BOOL fClearDirty); HRESULT LoadFolderPersistData(CFolder* pFolder, IStream* pStm); void DetachAllFoldersFromMachine(); CComponentData* m_pComponentData; CFolder* m_pCurFolder; CList<CFolder*, CFolder*> m_listFolder; BOOL m_Dirty; LONG m_Ref; };
#endif // __COMPONET_H_
|