Metode IDataObject::EnumFormatEtc (objidl.h)

Membuat objek untuk menghitung format yang didukung oleh objek data.

Sintaks

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

Parameter

[in] dwDirection

Arah data. Nilai yang mungkin berasal dari enumerasi DATADIR .

Nilai DATADIR_GET menghitung format yang dapat diteruskan ke panggilan ke IDataObject::GetData. Nilai DATADIR_SET menghitung format yang dapat diteruskan ke panggilan ke IDataObject::SetData.

[out] ppenumFormatEtc

Penunjuk ke variabel penunjuk IEnumFORMATETC yang menerima penunjuk antarmuka ke objek enumerator baru.

Nilai kembali

Metode ini mengembalikan S_OK pada keberhasilan. Nilai lain yang mungkin termasuk yang berikut ini.

Menampilkan kode Deskripsi
E_INVALIDARG
DwDirection yang disediakan tidak valid.
E_OUTOFMEMORY
Tidak tersedia cukup memori untuk operasi ini.
E_NOTIMPL
Arah yang ditentukan oleh dwDirection tidak didukung.
OLE_S_USEREG
Meminta agar OLE menghitung format dari registri.

Keterangan

EnumFormatEtc membuat objek enumerator yang dapat digunakan untuk menentukan semua cara objek data dapat menjelaskan data dalam struktur FORMATETC , dan menyediakan penunjuk ke antarmuka IEnumFORMATETC-nya . Ini adalah salah satu antarmuka enumerator standar.

Catatan untuk Penelepon

Setelah mendapatkan penunjuk, pemanggil dapat menghitung struktur FORMATETC dengan memanggil metode enumerasi IEnumFORMATETC. Karena format dapat berubah dari waktu ke waktu, tidak ada jaminan bahwa format enumerasi saat ini didukung karena format dapat berubah dari waktu ke waktu. Dengan demikian, aplikasi harus memperlakukan enumerasi sebagai petunjuk dari jenis format yang dapat diteruskan. Pemanggil bertanggung jawab untuk memanggil Rilis ketika selesai dengan enumerator.

EnumFormatEtc dipanggil ketika salah satu tindakan berikut terjadi:

  • Aplikasi memanggil OleSetClipboard. OLE harus menentukan data apa yang akan ditempatkan pada clipboard dan apakah perlu menempatkan format kompatibilitas OLE 1 pada clipboard.
  • Data sedang ditempelkan dari clipboard atau dihilangkan. Aplikasi menggunakan format pertama yang dapat diterima.
  • Kotak dialog Tempel Spesial ditampilkan. Aplikasi target membangun daftar format dari entri FORMATETC .

Catatan untuk Pelaksana

Format dapat didaftarkan secara statis dalam registri atau secara dinamis selama inisialisasi objek. Jika objek memiliki daftar format yang tidak berubah dan format ini terdaftar dalam registri, OLE menyediakan implementasi objek enumerasi FORMATETC yang dapat menghitung format yang terdaftar di bawah CLSID tertentu dalam registri. Penunjuk ke antarmuka IEnumFORMATETC-nya tersedia melalui panggilan ke fungsi pembantu OleRegEnumFormatEtc. Oleh karena itu, dalam situasi ini, Anda dapat menerapkan metode EnumFormatEtc hanya dengan panggilan ke fungsi ini.

Aplikasi EXE dapat secara efektif melakukan hal yang sama dengan menerapkan metode untuk mengembalikan nilai OLE_S_USEREG. Nilai pengembalian ini menginstruksikan handler objek default untuk memanggil OleRegEnumFormatEtc. Aplikasi objek yang diimplementasikan sebagai aplikasi objek DLL tidak dapat mengembalikan OLE_S_USEREG, jadi harus memanggil OleRegEnumFormatEtc secara langsung.

Format privat dapat dijumlahkan untuk objek OLE 1, jika terdaftar dengan kunci RequestDataFormats atau SetDataFormats di registri. Selain itu, format privat dapat dijumlahkan untuk objek OLE (semua versi setelah OLE 1), jika terdaftar dengan kunci GetDataFormats atau SetDataFormats.

Untuk objek OLE 1 yang servernya tidak memiliki informasi RequestDataFormats atau SetDataFormats yang terdaftar dalam registri, panggilan ke EnumFormatEtc yang melewati DATADIR_GET hanya menghitung format asli dan metafile, terlepas dari apakah mereka mendukung format ini atau yang lain. Memanggil EnumFormatEtc yang melewati DATADIR_SET pada objek tersebut hanya menghitung asli, terlepas dari apakah objek mendukung diatur dengan format lain.

Struktur FORMATETC yang dikembalikan oleh enumerasi biasanya menunjukkan perangkat target NULL (ptd). Ini sesuai karena, tidak seperti anggota FORMATETC lainnya, perangkat target tidak berpartisipasi dalam keputusan objek apakah dapat menerima atau memberikan data dalam panggilan SetData atau GetData.

Anggota FORMATETC yang ditiru sering menunjukkan bahwa lebih dari satu jenis media penyimpanan dapat diterima. Anda harus selalu menutupi dan menguji ini dengan menggunakan operator Boolean OR.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 2000 Professional [hanya aplikasi desktop]
Server minimum yang didukung Windows 2000 Server [hanya aplikasi desktop]
Target Platform Windows
Header objidl.h

Lihat juga

FORMATETC

IDataObject::GetData

IDataObject::SetData

IEnumFORMATETC

OleRegEnumFormatEtc