153 lines
4.7 KiB
C++
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
|