windows-nt/Source/XPSP1/NT/printscan/fax/admin/faxadmin/faxdataobj.h
2020-09-26 16:20:57 +08:00

153 lines
4.7 KiB
C++

/*++
Copyright (c) 1996 Microsoft Corporation
Module Name:
faxdataobj.h
Abstract:
This header prototypes my implementation of IDataObject.
Environment:
WIN32 User Mode
Author:
Darwin Ouyang (t-darouy) 30-Sept-1997
--*/
#ifndef __FAXDATAOBJECT_H_
#define __FAXDATAOBJECT_H_
#include "resource.h"
class CInternalNode; // Forward declarations
class CFaxComponentData;
class CFaxDataObject : public CComObjectRoot,
public IDataObject
{
public:
// ATL Map
DECLARE_NOT_AGGREGATABLE(CFaxDataObject)
BEGIN_COM_MAP(CFaxDataObject)
COM_INTERFACE_ENTRY(IDataObject)
END_COM_MAP()
// constructor and destructor
CFaxDataObject();
~CFaxDataObject();
//
// IDataObject
//
virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetDataHere(
/* [unique][in] */ FORMATETC __RPC_FAR *pformatetc,
/* [out][in] */ STGMEDIUM __RPC_FAR *pmedium);
// these are not implemented
virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetData(
/* [unique][in] */ FORMATETC __RPC_FAR *pformatetcIn,
/* [out] */ STGMEDIUM __RPC_FAR *pmedium) {
return E_NOTIMPL;
}
virtual HRESULT STDMETHODCALLTYPE QueryGetData(
/* [unique][in] */ FORMATETC __RPC_FAR *pformatetc) {
return E_NOTIMPL;
}
virtual HRESULT STDMETHODCALLTYPE GetCanonicalFormatEtc(
/* [unique][in] */ FORMATETC __RPC_FAR *pformatectIn,
/* [out] */ FORMATETC __RPC_FAR *pformatetcOut) {
return E_NOTIMPL;
}
virtual /* [local] */ HRESULT STDMETHODCALLTYPE SetData(
/* [unique][in] */ FORMATETC __RPC_FAR *pformatetc,
/* [unique][in] */ STGMEDIUM __RPC_FAR *pmedium,
/* [in] */ BOOL fRelease) {
return E_NOTIMPL;
}
virtual HRESULT STDMETHODCALLTYPE EnumFormatEtc(
/* [in] */ DWORD dwDirection,
/* [out] */ IEnumFORMATETC __RPC_FAR *__RPC_FAR *ppenumFormatEtc) {
return E_NOTIMPL;
}
virtual HRESULT STDMETHODCALLTYPE DAdvise(
/* [in] */ FORMATETC __RPC_FAR *pformatetc,
/* [in] */ DWORD advf,
/* [unique][in] */ IAdviseSink __RPC_FAR *pAdvSink,
/* [out] */ DWORD __RPC_FAR *pdwConnection) {
return E_NOTIMPL;
}
virtual HRESULT STDMETHODCALLTYPE DUnadvise(
/* [in] */ DWORD dwConnection) {
return E_NOTIMPL;
}
virtual HRESULT STDMETHODCALLTYPE EnumDAdvise(
/* [out] */ IEnumSTATDATA __RPC_FAR *__RPC_FAR *ppenumAdvise) {
return E_NOTIMPL;
}
//
// Non-interface member functions
//
public:
ULONG_PTR GetCookie() { return m_ulCookie; } // cast the owner to a cookie.
void SetCookie( ULONG_PTR cookie )
{
m_ulCookie = cookie;
}
CInternalNode * GetOwner() { return pOwner; }
// this functino sets the owner of the dataobject
// as well as registers the node specific clipboard formats
void SetOwner( CInternalNode* pO );
DATA_OBJECT_TYPES GetContext( void ) { return m_Context; }
void SetContext( DATA_OBJECT_TYPES context )
{
m_Context = context;
}
private:
HRESULT _WriteInternal(IStream *pstm);
HRESULT _WriteDisplayName(IStream *pstm);
HRESULT _WriteNodeType(IStream *pstm);
HRESULT _WriteClsid(IStream *pstm);
ULONG m_cRefs; // object refcount
ULONG_PTR m_ulCookie; // what this obj refers to
CInternalNode * pOwner; // used for getting info from the creator class
DATA_OBJECT_TYPES m_Context; // context in which this was created
#ifdef DEBUG
static long DataObjectCount; // debug DataObjectCount
#endif
public:
// At a minimum we have to implement these clipboard formats
// to keep MMC happy. We will assert if we don't
static UINT s_cfInternal; // Our custom clipboard format
static UINT s_cfDisplayName;
static UINT s_cfNodeType;
static UINT s_cfSnapinClsid;
};
#endif