IDataObject::EnumFormatEtc
Creates an
object for enumerating the FORMATETC
HRESULT EnumFormatEtc(
DWORD dwDirection, |
//Specifies a value from the enumeration DATADIR |
IEnumFORMATETC ** ppenumFormatetc |
//Indirect pointer to the new enumerator object |
); |
|
Parameters
dwDirection
[in]
Direction of the data through a value from the enumeration DATADIR
typedef enum tagDATADIR
{
DATADIR_GET = 1,
DATADIR_SET = 2,
} DATADIR;
The value
DATADIR_GET enumerates the formats that can be passed in to a call to IDataObject::GetData
ppenumFormatetc
[out]
Indirect pointer to the IEnumFORMATETC
Return Values
This method
supports the standard return values E_INVALIDARG and E_OUTOFMEMORY, as well as
the following:
S_OK
Enumerator
object was successfully created.
E_NOTIMPL
The direction
specified by dwDirection is not supported.
OLE_S_USEREG
Requests that
OLE enumerate the formats from the registry.
Remarks
IDataObject::EnumFormatEtc creates an enumerator object that can be used to
determine all of the ways the data object can describe data in a FORMATETC
Notes to Callers
Having
obtained the pointer, the caller can enumerate the FORMATETC structures by
calling the enumeration methods of IEnumFORMATETC. Because the formats
can change over time, there is no guarantee that an enumerated format is
currently supported because the formats can change over time. Accordingly,
applications should treat the enumeration as a hint of the format types that
can be passed. The caller is responsible for calling IEnumFormatEtc::Release
when it is finished with the enumeration.
IDataObject::EnumFormatEtc is called when one of the following actions occurs:
An application calls OleSetClipboard . OLE must determine what
data to place on the Clipboard and whether it is necessary to put OLE 1
compatibility formats on the Clipboard.
Data is being pasted from the
Clipboard or dropped. An application uses the first acceptable format.
The Paste Special dialog box is
displayed. The target application builds the list of formats from the FORMATETC entries.
Notes to Implementers
Formats can
be registered statically in the registry or dynamically during object
initialization. If an object has an unchanging list of formats and these
formats are registered in the registry, OLE provides an implementation of a
FORMATETC enumeration object that can enumerate formats registered under a
specific CLSID in the registry. A pointer to its IEnumFORMATETC
interface is available through a call to the helper function OleRegEnumFormatEtc
EXE
applications can effectively do the same thing by implementing the method to
return the value OLE_S_USEREG. This return value instructs the default object
handler to call OleRegEnumFormatEtc. Object applications that are
implemented as DLL object applications cannot return OLE_S_USEREG, so must call
OleRegEnumFormatEtc directly.
Private
formats can be enumerated for OLE 1 objects, if they are registered with the
RequestDataFormats or SetDataFormats keys in the registry. Also, private
formats can be enumerated for OLE objects (all versions after OLE 1), if they
are registered with the GetDataFormats or SetDataFormats keys.
For OLE 1
objects whose servers do not have RequestDataFormats or SetDataFormats
information registered in the registry, a call to IDataObject::EnumFormatEtc
passing DATADIR_GET only enumerates the Native and Metafile formats, regardless
of whether they support these formats or others. Calling EnumFormatEtc
passing DATADIR_SET on such objects only enumerates Native, regardless of
whether the object supports being set with other formats.
The FORMATETC
The TYMED
See Also