Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*++
Copyright (C) 1997-1999 Microsoft Corporation
Module Name:
DataObj.h
Abstract:
The IDataObject Interface is used to communicate data
--*/
#ifndef __DATAOBJ_H_
#define __DATAOBJ_H_
// Disable 64-bit warnings in atlctl.h
#if _MSC_VER >= 1200
#pragma warning(push)
#endif
#pragma warning ( disable : 4510 )
#pragma warning ( disable : 4610 )
#pragma warning ( disable : 4100 )
#include <atlctl.h>
#if _MSC_VER >= 1200
#pragma warning(pop)
#endif
/////////////////////////////////////////////////////////////////////////////
// Defines, Types etc...
//
class CComponentData; // Forward declaration
typedef enum tagCOOKIETYPE { COOKIE_IS_ROOTNODE, COOKIE_IS_COUNTERMAINNODE, COOKIE_IS_TRACEMAINNODE, COOKIE_IS_ALERTMAINNODE, COOKIE_IS_MYCOMPUTER,
} COOKIETYPE;
/////////////////////////////////////////////////////////////////////////////
// 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 IDataObject, public CComObjectRoot
{ public:
DECLARE_NOT_AGGREGATABLE(CDataObject)
BEGIN_COM_MAP(CDataObject) COM_INTERFACE_ENTRY(IDataObject) END_COM_MAP()
CDataObject(); virtual ~CDataObject();
// IUnknown overrides
STDMETHOD(QueryInterface) (REFIID riid, LPVOID FAR* ppvObj); STDMETHOD_(ULONG, AddRef) (); STDMETHOD_(ULONG, Release) ();
// IDataObject methods
public: STDMETHOD(GetDataHere)(FORMATETC *pformatetc, STGMEDIUM *pmedium);
// The rest are not implemented in this sample
STDMETHOD(GetData)(LPFORMATETC /*lpFormatetcIn*/, LPSTGMEDIUM /*lpMedium*/) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); return E_NOTIMPL; };
STDMETHOD(EnumFormatEtc)(DWORD /*dwDirection*/, LPENUMFORMATETC* /*ppEnumFormatEtc*/) { return E_NOTIMPL; };
STDMETHOD(QueryGetData)(LPFORMATETC /*lpFormatetc*/) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); return E_NOTIMPL; };
STDMETHOD(GetCanonicalFormatEtc)(LPFORMATETC /*lpFormatetcIn*/, LPFORMATETC /*lpFormatetcOut*/) { return E_NOTIMPL; };
STDMETHOD(SetData)(LPFORMATETC/* lpFormatetc */, LPSTGMEDIUM /* lpMedium */, BOOL /* bRelease */) { 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; } COOKIETYPE GetCookieType() { return m_CookieType; } MMC_COOKIE GetCookie() { return m_ulCookie; }
VOID SetData(MMC_COOKIE ulCookie, DATA_OBJECT_TYPES Type, COOKIETYPE ct);
private: HRESULT WriteInternal(IStream *pstm); HRESULT WriteDisplayName(IStream *pstm); HRESULT WriteMachineName(IStream *pstm); HRESULT WriteNodeType(IStream *pstm); HRESULT WriteClsid(IStream *pstm);
ULONG m_cRefs; // Object refcount
MMC_COOKIE m_ulCookie; // What this obj refers to
DATA_OBJECT_TYPES m_Context; // Context in which this was created (Data object type)
COOKIETYPE m_CookieType; // How to interpret m_ulCookie
public: static UINT s_cfMmcMachineName; // format for machine name when ext. snapin
static UINT s_cfInternal; static UINT s_cfDisplayName; static UINT s_cfNodeType; static UINT s_cfSnapinClsid; };
#endif // __DATAOBJ_H_
|