/*======================================================================================// | Process Control // | // |Copyright (c) 1998 Sequent Computer Systems, Incorporated. All rights reserved. // | // |File Name: DataObj.h // | // |Description: Class definition for CDataObj, implements IDataObj interface // | // |Created: Paul Skoglund 07-1998 // | // |Rev History: // | // |=======================================================================================*/ ///////////////////////////////////////////////////////////////////////////// // DataObj: The IDataObject Interface is used to communicate data // // This is a part of the MMC SDK. // Copyright (C) 1997 Microsoft Corporation // All rights reserved. // // This source code is only intended as a supplement to the // MMC SDK Reference and related // electronic documentation provided with the library. // See these sources for detailed information regarding the // MMC Library product. // #ifndef __DATAOBJ_H_ #define __DATAOBJ_H_ #include #include #include "Globals.h" // Custom clipboard formats const TCHAR *const CCF_SNAPIN_INTERNAL = _T("CF_PROCCON_DATAOBJECT_CONTAINER"); const TCHAR *const CCF_SNAPIN_BASEINTERNAL = _T("CF_PROCCON_BASENODEOBJECT_CONTAINER"); ///////////////////////////////////////////////////////////////////////////// // Defines, Types etc... // ///////////////////////////////////////////////////////////////////////////// // CDataObject - This class is used to pass data back and forth with MMC. It // uses a standard interface, IDataObject to acomplish this. // Refer to OLE documentation for a description of clipboard // formats and the IDataObject interface. class CDataObject: //public IDataObjectImpl, public IDataObject, public CComObjectRoot { public: DECLARE_NOT_AGGREGATABLE(CDataObject) BEGIN_COM_MAP(CDataObject) COM_INTERFACE_ENTRY(IDataObject) END_COM_MAP() CDataObject(); ~CDataObject(); // IDataObject methods public: STDMETHOD(GetDataHere)(FORMATETC *pformatetc, STGMEDIUM *pmedium); STDMETHOD(EnumFormatEtc)( DWORD dwDirection, LPENUMFORMATETC* ppEnumFormatEtc ); STDMETHOD(GetData)(LPFORMATETC pFormatEtc, LPSTGMEDIUM pStgMedium); STDMETHOD(QueryGetData)(LPFORMATETC pFormatEtc); STDMETHOD(SetData)(LPFORMATETC pFormatEtc, LPSTGMEDIUM pStgMedium, BOOL bRelease); // The rest are not implemented STDMETHOD(GetCanonicalFormatEtc)(LPFORMATETC lpFormatetcIn, LPFORMATETC lpFormatetcOut) { return E_NOTIMPL; }; STDMETHOD(DAdvise)(LPFORMATETC lpFormatetc, DWORD advf, LPADVISESINK pAdvSink, LPDWORD pdwConnection) { return E_NOTIMPL; }; STDMETHOD(DUnadvise)(DWORD dwConnection) { return E_NOTIMPL; }; STDMETHOD(EnumDAdvise)(LPENUMSTATDATA* ppEnumAdvise) { return E_NOTIMPL; }; // Non-interface member functions public: DATA_OBJECT_TYPES GetContext() { return m_Context; } MMC_COOKIE GetResultItemCookie() { ASSERT(m_bResultItem); return m_Cookie; } CBaseNode *GetBaseObject() { ASSERT(m_pFolderObj); return m_pFolderObj; } BOOL IsResultItem() { return m_bResultItem; } VOID SetDataObject(DATA_OBJECT_TYPES, CBaseNode *pFolder ); VOID SetDataObject(DATA_OBJECT_TYPES, CBaseNode *pFolder, MMC_COOKIE ResultItemCookie); private: HRESULT WriteNodeID (IStream *pstm, BOOL bCCF_NODEID = FALSE ); HRESULT WriteSnapinPreloads(IStream *pstm); HRESULT WriteWindowTitle (IStream* pstm); HRESULT WriteNodeTypeGUID (IStream *pstm); HRESULT WriteNodeTypeGUIDString(IStream *pstm); HRESULT WriteDisplayName (IStream *pstm); HRESULT WriteClsid (IStream *pstm); HRESULT WriteInternal (IStream *pstm); HRESULT WriteBaseInternal (IStream *pstm); DATA_OBJECT_TYPES m_Context; // Context in which this was created CBaseNode * m_pFolderObj; // Pointer to a folder object MMC_COOKIE m_Cookie; // result item LPARAM cookie or index BOOL m_bResultItem; // dataobject pointer for a result item... public: static LONG s_nCount; // not required, but used by MMC formats: static UINT s_cfNodeID; static UINT s_cfNodeID2; static UINT s_cfSnapinPreloads; static UINT s_cfWindowTitle; // required formats: static UINT s_cfNodeType; static UINT s_cfNodeTypeString; static UINT s_cfDisplayName; static UINT s_cfSnapinClsid; // custom formats: static UINT s_cfInternal; // Our custom clipboard format static UINT s_cfBaseInternal; // Our custom clipboard format }; #endif // __DATAOBJ_H_