windows-nt/Source/XPSP1/NT/admin/snapin/certentp/dataobj.h
2020-09-26 16:20:57 +08:00

98 lines
2.6 KiB
C++

//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1997-1999.
//
// File: dataobj.h
//
// Contents: CCertTemplatesDataObject
//
//----------------------------------------------------------------------------
#ifndef __DATAOBJ_H_INCLUDED__
#define __DATAOBJ_H_INCLUDED__
// For use in multiple selection.
LPDATAOBJECT ExtractMultiSelect (LPDATAOBJECT lpDataObject);
class CCertTemplatesDataObject : public CDataObject
{
DECLARE_NOT_AGGREGATABLE(CCertTemplatesDataObject)
public:
// debug refcount
#if DBG==1
ULONG InternalAddRef()
{
return CComObjectRoot::InternalAddRef();
}
ULONG InternalRelease()
{
return CComObjectRoot::InternalRelease();
}
int dbg_InstID;
#endif // DBG==1
CCertTemplatesDataObject();
virtual ~CCertTemplatesDataObject();
STDMETHODIMP Next(ULONG celt, MMC_COOKIE* rgelt, ULONG *pceltFetched);
STDMETHODIMP Skip(ULONG celt);
STDMETHODIMP Reset(void);
void AddCookie(CCertTmplCookie* pCookie);
virtual HRESULT Initialize (
CCertTmplCookie* pcookie,
DATA_OBJECT_TYPES type,
CCertTmplComponentData& refComponentData);
// IDataObject interface implementation
HRESULT STDMETHODCALLTYPE GetDataHere(
FORMATETC __RPC_FAR *pFormatEtcIn,
STGMEDIUM __RPC_FAR *pMedium);
void SetMultiSelData(BYTE* pbMultiSelData, UINT cbMultiSelData);
STDMETHODIMP GetData(LPFORMATETC lpFormatetc, LPSTGMEDIUM lpMedium);
STDMETHOD(IsMultiSelect)(void)
{
return (m_rgCookies.GetSize() > 1) ? S_OK : S_FALSE;
}
protected:
HRESULT PutDisplayName(STGMEDIUM* pMedium);
HRESULT CreateMultiSelectObject(LPSTGMEDIUM lpMedium);
HRESULT Create (const void* pBuffer, int len, LPSTGMEDIUM lpMedium);
CCertTmplCookie* m_pCookie; // the CCookieBlock is AddRef'ed for the life of the DataObject
CertTmplObjectType m_objecttype;
DATA_OBJECT_TYPES m_dataobjecttype;
GUID m_SnapInCLSID;
public:
// Clipboard formats
static CLIPFORMAT m_CFDisplayName;
static CLIPFORMAT m_CFMultiSel; // Required for multiple selection
static CLIPFORMAT m_CFMultiSelDobj; // Required for multiple selection
static CLIPFORMAT m_CFMultiSelDataObjs;// for Multiple selection
static CLIPFORMAT m_CFDsObjectNames; // For DS object property pages
private:
// data member used by IEnumCookies
ULONG m_iCurr;
CCookiePtrArray m_rgCookies;
bool m_bMultiSelDobj;
BYTE* m_pbMultiSelData;
UINT m_cbMultiSelData;
public:
void SetMultiSelDobj()
{
m_bMultiSelDobj = true;
}
}; // CCertTemplatesDataObject
#endif // ~__DATAOBJ_H_INCLUDED__