Leaked source code of windows server 2003
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.
|
|
/**********************************************************************/ /** Microsoft Windows/NT **/ /** Copyright(c) Microsoft Corporation, 1997 - 1998 **/ /**********************************************************************/
/*
dataobj.h Implementation for data objects in the MMC
FILE HISTORY: */
#ifndef _DATAOBJ_H
#define _DATAOBJ_H
#ifndef _COMPDATA_H_
#include "compdata.h"
#endif
#ifndef _EXTRACT_H
#include "extract.h"
#endif
#ifndef _DYNEXT_H
#include "dynext.h"
#endif
class CDataObject : public IDataObject { public: DeclareIUnknownMembers(IMPL) DeclareIDataObjectMembers(IMPL)
// Derived class should override this for custom behavior
virtual HRESULT QueryGetMoreData(LPFORMATETC lpFormatEtc) { return E_INVALIDARG; } virtual HRESULT GetMoreDataHere(LPFORMATETC lpFormatEtc, LPSTGMEDIUM lpMedium) { return DV_E_CLIPFORMAT; }
public: // Construction/Destruction
// Normal constructor
CDataObject() : m_cRef(1), m_pbMultiSelData(NULL), m_cbMultiSelData(0), m_bMultiSelDobj(FALSE), m_pDynExt(NULL) { DEBUG_INCREMENT_INSTANCE_COUNTER(CDataObject); };
virtual ~CDataObject() { DEBUG_DECREMENT_INSTANCE_COUNTER(CDataObject); if (m_pbMultiSelData) delete m_pbMultiSelData; };
// Clipboard formats that are required by the console
public: static unsigned int m_cfNodeType; static unsigned int m_cfNodeTypeString; static unsigned int m_cfDisplayName; static unsigned int m_cfCoClass; // Required by the console
static unsigned int m_cfMultiSel; // Required for multiple selection
static unsigned int m_cfMultiSelDobj; // Required for multiple selection
static unsigned int m_cfDynamicExtension; static unsigned int m_cfNodeId2; static unsigned int m_cfInternal;
// Standard IDataObject methods
public:
// Implementation
public: void SetType(DATA_OBJECT_TYPES type) { Assert(m_internal.m_type == CCT_UNINITIALIZED); m_internal.m_type = type; }
void SetCookie(MMC_COOKIE cookie) { m_internal.m_cookie = cookie; } void SetString(LPTSTR lpString) { m_internal.m_string = lpString; } void SetClsid(const CLSID& clsid) { m_internal.m_clsid = clsid; } void SetVirtualIndex(int nIndex) { m_internal.m_index = nIndex; }
BOOL HasVirtualIndex() { return m_internal.m_index != -1; } int GetVirtualIndex() { return m_internal.m_index; }
void SetMultiSelData(BYTE* pbMultiSelData, UINT cbMultiSelData) { m_pbMultiSelData = pbMultiSelData; m_cbMultiSelData = cbMultiSelData; }
void SetMultiSelDobj() { m_bMultiSelDobj = TRUE; }
HRESULT SetTFSComponentData(ITFSComponentData *pTFSCompData) { m_spTFSComponentData.Set(pTFSCompData); return hrOK; }
void SetInnerIUnknown(IUnknown *punk) { m_spUnknownInner.Set(punk); }
void SetDynExt(CDynamicExtensions * pDynExt) { m_pDynExt = pDynExt; } CDynamicExtensions * GetDynExt() { return m_pDynExt; }
protected: HRESULT Create(const void* pBuffer, int len, LPSTGMEDIUM lpMedium); ITFSNode* GetDataFromComponentData();
private: HRESULT CreateNodeTypeData(LPSTGMEDIUM lpMedium); HRESULT CreateNodeTypeStringData(LPSTGMEDIUM lpMedium); HRESULT CreateDisplayName(LPSTGMEDIUM lpMedium); HRESULT CreateInternal(LPSTGMEDIUM lpMedium); HRESULT CreateCoClassID(LPSTGMEDIUM lpMedium); HRESULT CreateMultiSelData(LPSTGMEDIUM lpMedium); HRESULT CreateNodeId2(LPSTGMEDIUM lpMedium);
INTERNAL m_internal;
// pointer to the ComponentData
private:
long m_cRef;
SPITFSComponentData m_spTFSComponentData;
BYTE* m_pbMultiSelData; UINT m_cbMultiSelData; BOOL m_bMultiSelDobj;
CDynamicExtensions *m_pDynExt;
// pointer to inner unknown
SPIUnknown m_spUnknownInner; };
#endif
|