//+------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1994 - 1999 // // File: Component2snapin.hxx // // Contents: The snapin implements IComponentData2 & IComponent2 interfaces. // This file contains classes that implement framework methods on // CBaseSnapinItem to support these interfaces. // //-------------------------------------------------------------------- #ifndef _COMPONENT2SNAPIN_HXX_ #define _COMPONENT2SNAPIN_HXX_ // Forward declarations. class CComponent2TestSnapinLVLeafItem; //+------------------------------------------------------------------- // // Class: CComponent2TestRootItem // // Purpose: Implements the root item for a standalone snapin. // //-------------------------------------------------------------------- class CComponent2TestRootItem : public CBaseSnapinItem, public IDispatchImpl { typedef CBaseSnapinItem super; // Used by CBaseSnapinItem::ScCreateItem, connect this item with its children. typedef CComObject > t_item; typedef CComObject > t_itemChild; public: CComponent2TestRootItem( void ) {} // Raw constructor - use only for static item. virtual ~CComponent2TestRootItem( void ) {} BEGIN_COM_MAP(CComponent2TestRootItem) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(ISnapinTasks) END_COM_MAP() protected: // Item tree related information // node type related information virtual const CNodeType* Pnodetype( void ) { return &nodetypeComponent2TestRoot;} // the display name of the item virtual const tstring* PstrDisplayName( void ) { return &m_strDisplayName;} // Get ListView data (GetDisplayInfo calls this). virtual SC ScGetField(DAT dat, tstring& strField); // Image list information virtual LONG Iconid() { return m_uIconIndex; } virtual LONG OpenIconid() { return m_uIconIndex; } virtual BOOL FIsContainer( void ) { return TRUE; } public: // ISnapinTasks STDMETHOD(StringFromScriptToSnapin)(/*[in]*/ BSTR bstrMessage); STDMETHOD(StringFromSnapinToScript)(/*[out]*/ BSTR *pbstrMessage); STDMETHOD(get_Name)(/*[out, retval]*/ BSTR *pVal); STDMETHOD(put_Name)(/*[in]*/ BSTR newVal); public: virtual SC ScInit(CBaseSnapin *pSnapin, CColumnInfoEx *pcolinfoex = NULL, INT ccolinfoex = 0, BOOL fIsRoot = FALSE); virtual SC ScQueryDispatch(long cookie, DATA_OBJECT_TYPES type, LPDISPATCH *ppDispatch); public: // Creates children for the node virtual SC ScCreateChildren( void ); protected: tstring m_strDisplayName; UINT m_uIconIndex; }; //+------------------------------------------------------------------- // // Class: CComponent2TestSnapinLVLeafItem // // Purpose: Implements a result pane item. // //-------------------------------------------------------------------- class CComponent2TestSnapinLVLeafItem : public CBaseSnapinItem, public IDispatchImpl { typedef CBaseSnapinItem super; // Used by CBaseSnapinItem::ScCreateItem, connect this item with its children. // This is a leaf item so this item acts as its child. typedef CComObject > t_item; typedef CComObject > t_itemChild; public: CComponent2TestSnapinLVLeafItem( void ) {} virtual ~CComponent2TestSnapinLVLeafItem( void ) {} BEGIN_COM_MAP(CComponent2TestSnapinLVLeafItem) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(ISnapinTasks) END_COM_MAP() protected: // Item tree related information // node type related information virtual const CNodeType *Pnodetype( void ) {return &nodetypeComponent2TestLVLeafItem;} // the display name of the item virtual const tstring* PstrDisplayName( void ) { return &m_strDisplayName; } // Get ListView data (GetDisplayInfo calls this). virtual SC ScGetField(DAT dat, tstring& strField); // Image list information virtual LONG Iconid() { return m_uIconIndex; } virtual BOOL FIsContainer( void ) { return FALSE; } // Context menu support virtual SnapinMenuItem *Pmenuitem(void); virtual INT CMenuItem(void); virtual SC ScCommand(long nCommandID, CComponent *pComponent = NULL); public: // ISnapinTasks STDMETHOD(StringFromScriptToSnapin)(/*[in]*/ BSTR bstrMessage); STDMETHOD(StringFromSnapinToScript)(/*[out]*/ BSTR *pbstrMessage); STDMETHOD(get_Name)(/*[out, retval]*/ BSTR *pVal); STDMETHOD(put_Name)(/*[in]*/ BSTR newVal); public: virtual SC ScInit(CBaseSnapin *pSnapin, CColumnInfoEx *pcolinfoex = NULL, INT ccolinfoex = 0, BOOL fIsRoot = FALSE); virtual SC ScQueryDispatch(long cookie, DATA_OBJECT_TYPES type, LPDISPATCH *ppDispatch); public: static SC ScCreateLVLeafItem(CComponent2TestRootItem *pitemParent, t_itemChild * pitemPrevious, t_itemChild ** ppitem, BOOL fNew); protected: // virtual SC ScGetVerbs(DWORD * pdwVerbs); private: tstring m_strDisplayName; UINT m_uIconIndex; // For context menus static SnapinMenuItem s_rgmenuitemLVLeafItem[]; static INT s_cmenuitemLVLeafItem; }; //+------------------------------------------------------------------- // // Class: CComponent2Snapin // // Purpose: Implements a snapin. // //-------------------------------------------------------------------- class CComponent2TestSnapin : public CBaseSnapin { // Specify the root node of the snapin. typedef CComObject > t_itemRoot; SNAPIN_DECLARE(CComponent2TestSnapin); public: CComponent2TestSnapin(); virtual ~CComponent2TestSnapin(); // information about the snapin and root (ie initial) node virtual BOOL FStandalone() { return TRUE; } virtual BOOL FIsExtension() { return FALSE; } virtual BOOL FSupportsIComponent2() {return TRUE;} virtual LONG IdsDescription(void) {return IDS_Component2SNAPINDesc;} virtual LONG IdsName(void) {return IDS_Component2SNAPINName;} const CSnapinInfo* Psnapininfo() { return &snapininfoComponent2Test; } protected: // The column header info structures. static CColumnInfoEx s_colinfo[]; static INT s_colwidths[]; static INT s_ccolinfo; protected: virtual CColumnInfoEx* Pcolinfoex(INT icolinfo=0) { return s_colinfo + icolinfo; } virtual INT &ColumnWidth(INT icolwidth=0) { return s_colwidths[icolwidth]; } virtual INT Ccolinfoex() { return s_ccolinfo; } }; #endif