IDataObject::EnumFormatEtc-Methode (objidl.h)

Erstellt ein -Objekt, um die von einem Datenobjekt unterstützten Formate aufzulisten.

Syntax

HRESULT EnumFormatEtc(
  [in]  DWORD          dwDirection,
  [out] IEnumFORMATETC **ppenumFormatEtc
);

Parameter

[in] dwDirection

Die Richtung der Daten. Mögliche Werte stammen aus der DATADIR-Enumeration .

Der Wert DATADIR_GET listet die Formate auf, die an einen Aufruf von IDataObject::GetData übergeben werden können. Der Wert DATADIR_SET listet die Formate auf, die an einen Aufruf von IDataObject::SetData übergeben werden können.

[out] ppenumFormatEtc

Ein Zeiger auf eine IEnumFORMATETC-Zeigervariable , die den Schnittstellenzeiger auf das neue Enumeratorobjekt empfängt.

Rückgabewert

Diese Methode gibt S_OK bei Erfolg zurück. Weitere mögliche Werte sind:

Rückgabecode Beschreibung
E_INVALIDARG
Die angegebene dwDirection ist ungültig.
E_OUTOFMEMORY
Für diesen Vorgang ist nicht genügend Arbeitsspeicher verfügbar.
E_NOTIMPL
Die von dwDirection angegebene Richtung wird nicht unterstützt.
OLE_S_USEREG
Fordert an, dass die Formate aus der Registrierung mit OLE aufgelistet werden.

Hinweise

EnumFormatEtc erstellt ein Enumeratorobjekt, das verwendet werden kann, um alle Möglichkeiten zu bestimmen, wie das Datenobjekt Daten in einer FORMATETC-Struktur beschreiben kann, und stellt einen Zeiger auf seine IEnumFORMATETC-Schnittstelle bereit. Dies ist eine der Standard-Enumeratorschnittstellen.

Hinweise für Anrufer

Nach dem Abrufen des Zeigers kann der Aufrufer die FORMATETC-Strukturen auflisten, indem er die Enumerationsmethoden von IEnumFORMATETC aufruft. Da sich die Formate im Laufe der Zeit ändern können, gibt es keine Garantie, dass ein aufgezähltes Format derzeit unterstützt wird, da sich die Formate im Laufe der Zeit ändern können. Entsprechend sollten Anwendungen die Enumeration als Hinweis auf die Formattypen behandeln, die übergeben werden können. Der Aufrufer ist für den Aufruf von Release verantwortlich, wenn er mit dem Enumerator abgeschlossen ist.

EnumFormatEtc wird aufgerufen, wenn eine der folgenden Aktionen ausgeführt wird:

  • Eine Anwendung ruft OleSetClipboard auf. OLE muss bestimmen, welche Daten in der Zwischenablage platziert werden sollen und ob OLE 1-Kompatibilitätsformate in die Zwischenablage eingefügt werden müssen.
  • Daten werden aus der Zwischenablage eingefügt oder gelöscht. Eine Anwendung verwendet das erste zulässige Format.
  • Das Dialogfeld Spezial einfügen wird angezeigt. Die Zielanwendung erstellt die Liste der Formate aus den FORMATTC-Einträgen .

Hinweise zu Implementierern

Formate können statisch in der Registrierung oder dynamisch während der Objektinitialisierung registriert werden. Wenn ein Objekt über eine nicht veränderliche Liste von Formaten verfügt und diese Formate in der Registrierung registriert sind, stellt OLE eine Implementierung eines FORMATETC-Enumerationsobjekts bereit, das Formate auflisten kann, die unter einer bestimmten CLSID in der Registrierung registriert sind. Ein Zeiger auf die IEnumFORMATETC-Schnittstelle ist über einen Aufruf der Hilfsfunktion OleRegEnumFormatEtc verfügbar. In dieser Situation können Sie daher die EnumFormatEtc-Methode einfach mit einem Aufruf dieser Funktion implementieren.

EXE-Anwendungen können dasselbe tun, indem sie die -Methode implementieren, um den Wert OLE_S_USEREG zurückzugeben. Dieser Rückgabewert weist den Standardobjekthandler an, OleRegEnumFormatEtc aufzurufen. Objektanwendungen, die als DLL-Objektanwendungen implementiert sind, können keine OLE_S_USEREG zurückgeben. Daher müssen OleRegEnumFormatEtc direkt aufgerufen werden.

Private Formate können für OLE 1-Objekte aufgelistet werden, wenn sie mit den RequestDataFormats- oder SetDataFormats-Schlüsseln in der Registrierung registriert sind. Außerdem können private Formate für OLE-Objekte (alle Versionen nach OLE 1) aufgelistet werden, wenn sie mit den GetDataFormats- oder SetDataFormats-Schlüsseln registriert sind.

Bei OLE 1-Objekten, deren Server keine RequestDataFormats- oder SetDataFormats-Informationen in der Registrierung registriert haben, listet ein Aufruf von EnumFormatEtc , der DATADIR_GET nur die nativen Und Metadateiformate auf, unabhängig davon, ob sie diese Formate oder andere unterstützen. Das Aufrufen von EnumFormatEtc , das DATADIR_SET für solche Objekte übergibt, listet nur nativ auf, unabhängig davon, ob das Objekt das Festlegen mit anderen Formaten unterstützt.

Die von der Enumeration zurückgegebene FORMATETC-Struktur gibt in der Regel ein NULL-Zielgerät ( PTD ) an. Dies ist angemessen, da das Zielgerät im Gegensatz zu den anderen Elementen von FORMATTC nicht an der Entscheidung des Objekts teilnimmt, ob es die Daten entweder in einem SetData- oder GetData-Aufruf akzeptieren oder bereitstellen kann.

Das tymed-Element von FORMATETC weist häufig darauf hin, dass mehr als eine Art von Speichermedium akzeptabel ist. Sie sollten dies immer maskieren und testen, indem Sie einen booleschen OR-Operator verwenden.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile objidl.h

Weitere Informationen

FORMATETC

IDataObject::GetData

IDataObject::SetData

IEnumFORMATETC

OleRegEnumFormatEtc