Bagikan melalui


Antarmuka Transfer Data

Antarmuka IDataObject memberi konsumen data metode untuk mendapatkan dan mengatur data objek, menentukan format mana yang didukung objek, dan mendaftar untuk dan menerima pemberitahuan saat data dalam objek berubah. Saat mendapatkan data, pemanggil dapat menentukan format di mana ia ingin merender data. Namun, sumber data menentukan media penyimpanan, yang dikembalikan dalam parameter keluar yang disediakan oleh pemanggil.

Dengan sendirinya, IDataObject menyediakan semua alat yang Anda butuhkan untuk menerapkan transfer clipboard Windows atau transfer dokumen majemuk dalam aplikasi Anda. Jika Anda juga ingin mendukung transfer seret dan lepas, Anda perlu mengimplementasikan antarmuka IDropSource dan IDropTarget bersama dengan IDataObject.

Antarmuka IDataObject yang dikombinasikan dengan API clipboard OLE menyediakan semua kemampuan API clipboard Windows. Umumnya tidak perlu menggunakan kedua API clipboard. Pemasok data yang mendukung transfer seret dan lepas atau dokumen gabungan OLE harus mengimplementasikan antarmuka IDataObject . Jika aplikasi Anda hanya mendukung transfer clipboard sekarang, tetapi Anda berniat untuk menambahkan dokumen seret dan jatuhkan atau gabungan dalam rilis selanjutnya, Anda mungkin ingin menerapkan IDataObject dan API clipboard OLE sekarang untuk meminimalkan jumlah waktu yang dihabiskan untuk melakukan rekode dan penelusuran kesalahan nanti. Anda mungkin juga ingin menerapkan IDataObject untuk memanfaatkan media transfer selain memori global.

Tabel berikut ini meringkas mana yang akan digunakan, tergantung pada jenis transfer data apa yang ingin Anda dukung:

Untuk mendukung Menggunakan
Dokumen gabungan
IDataObject
Seret dan letakkan transfer
IDataObject, IDropSource, IDropTarget, DoDragDrop (atau yang setara)
Transfer clipboard menggunakan memori global secara eksklusif
Clipboard API
Transfer clipboard menggunakan media pertukaran selain memori global.
IDataObject
Transfer papan klip sekarang tetapi seret dan letakkan atau senyawa dokumen nanti
IDataObject dan antarmuka dan fungsi yang tercantum di atas untuk "Transfer seret dan lepas"

Saat pengguna memulai operasi transfer data, aplikasi sumber membuat instans IDataObject dan melaluinya membuat data tersedia dalam satu atau beberapa format. Dalam transfer clipboard, aplikasi memanggil fungsi OleSetClipboard untuk meneruskan penunjuk objek data ke OLE. (OleSetClipboard juga menawarkan format data clipboard standar untuk aplikasi OLE versi 1 dan non-OLE.) Dalam transfer seret dan lepas, aplikasi memanggil fungsi DoDragDrop sebagai gantinya.

Di sisi penerimaan transfer, tujuan menerima penunjuk IDataObject baik sebagai argumen untuk pemanggilan IDropTarget::D rop atau dengan memanggil fungsi OleSetClipboard, tergantung pada apakah transfer dengan cara seret dan letakkan atau clipboard. Setelah mendapatkan pointer ini, tujuan memanggil IDataObject::EnumFormatEtc untuk mempelajari format apa yang tersedia untuk pengambilan dan pada jenis media apa yang dapat mereka peroleh. Berbekal informasi ini, aplikasi penerima meminta data dengan panggilan ke IDataObject::GetData.

Data Transfer