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 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 campuran di aplikasi Anda. Jika Anda juga ingin mendukung transfer seret dan lepas, Anda perlu mengimplementasikanIDropSourcedan antarmuka IDropTarget bersama dengan IDataObject.

AntarmukaIDataObjectyang 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 seret dan letakkan atau senyawa dokumen 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 menggunakan 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 Pakai
Dokumen gabungan
IDataObject
Seret dan letakkan transfer
IDataObject, IDropSource, IDropTarget, DoDragDrop (atau yang setara)
Transfer clipboard menggunakan memori global secara eksklusif
API Clipboard
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 "Seret dan letakkan transfer"

Ketika 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 fungsiOleSetClipboard 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 fungsiDoDragDropsebagai gantinya.

Di sisi penerimaan transfer, tujuan menerima penunjuk IDataObject baik sebagai argumen pemanggilan IDropTarget::D rop atau dengan memanggil fungsiOleSetClipboard, tergantung pada apakah transfer dengan cara menyeret dan menghilangkan 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.

Transfer Data