#ifndef _BASENODE_H #define _BASENODE_H #include static const GUID GUID_MainNode = { /* 94759c36-36ec-46bf-b63a-613013ed1162 */ 0x94759c36, 0x36ec, 0x46bf, {0xb6, 0x3a, 0x61, 0x30, 0x13, 0xed, 0x11, 0x62} }; enum nodeType { MAIN_NODE = 1 , CONNECTION_NODE, UNDEF_NODE }; class CBaseNode : public IDataObject { ULONG m_cref; nodeType m_nNodeType; public: CBaseNode( ); virtual ~CBaseNode( ) { } STDMETHOD( QueryInterface )( REFIID , PVOID * ); STDMETHOD_( ULONG , AddRef )( ); STDMETHOD_( ULONG , Release )( ); // IDataObject STDMETHOD( GetData )( LPFORMATETC , LPSTGMEDIUM ); STDMETHOD( GetDataHere )( LPFORMATETC , LPSTGMEDIUM ); STDMETHOD( QueryGetData )( LPFORMATETC ); STDMETHOD( GetCanonicalFormatEtc )( LPFORMATETC , LPFORMATETC ); STDMETHOD( SetData )( LPFORMATETC , LPSTGMEDIUM , BOOL ); STDMETHOD( EnumFormatEtc )( DWORD , LPENUMFORMATETC * ); STDMETHOD( DAdvise )( LPFORMATETC , ULONG , LPADVISESINK , PULONG ); STDMETHOD( DUnadvise )( DWORD ); STDMETHOD( EnumDAdvise )( LPENUMSTATDATA * ); // BaseNode methods are left to the derived object void SetNodeType( nodeType nNodeType ) { m_nNodeType = nNodeType; } nodeType GetNodeType( void ) { return m_nNodeType; } virtual BOOL AddMenuItems( LPCONTEXTMENUCALLBACK , PLONG ) { return FALSE; } virtual DWORD GetImageIdx( ){ return 0; } }; #endif // _BASENODE_H