Bagikan melalui


Objek Data dan Sumber Data: Manipulasi

Setelah objek data atau sumber data dibuat, Anda dapat melakukan sejumlah operasi umum pada data, seperti menyisipkan dan menghapus data, menghitung format tempat data berada, dan banyak lagi. Artikel ini menjelaskan teknik yang diperlukan untuk menyelesaikan operasi yang paling umum. Topik meliputi:

Menyisipkan Data ke Dalam Sumber Data

Bagaimana data disisipkan ke dalam sumber data tergantung pada apakah data disediakan segera atau sesuai permintaan, dan di media mana data disediakan. Kemungkinannya adalah sebagai berikut.

Segera Menyediakan Data (Penyajian Langsung)

  • Panggil COleDataSource::CacheGlobalData berulang kali untuk setiap format Clipboard tempat Anda menyediakan data. Teruskan format Clipboard yang akan digunakan, handel ke memori yang berisi data dan, secara opsional, struktur FORMATETC yang menjelaskan data.

    -atau-

  • Jika Anda ingin bekerja langsung dengan struktur STGMEDIUM , Anda memanggil COleDataSource::CacheData alih-alih COleDataSource::CacheGlobalData dalam opsi di atas.

Menyediakan Data sesuai Permintaan (Penyajian Tertunda)

Ini adalah topik lanjutan.

  • Panggil COleDataSource::DelayRenderData berulang kali untuk setiap format Clipboard tempat Anda menyediakan data. Teruskan format Clipboard yang akan digunakan dan, secara opsional, struktur FORMATETC yang menjelaskan data. Ketika data diminta, kerangka akan memanggil COleDataSource::OnRenderData, yang harus Anda ganti.

    -atau-

  • Jika Anda menggunakan CFile objek untuk menyediakan data, panggil COleDataSource::DelayRenderFileData alih-alih COleDataSource::DelayRenderData di opsi sebelumnya. Ketika data diminta, kerangka akan memanggil COleDataSource::OnRenderFileData, yang harus Anda ganti.

Menentukan Format yang Tersedia dalam Objek Data

Sebelum aplikasi memungkinkan pengguna menempelkan data ke dalamnya, pengguna perlu mengetahui apakah ada format di Clipboard yang dapat ditanganinya. Untuk melakukan ini, aplikasi Anda harus melakukan hal berikut:

  1. Buat COleDataObject objek dan struktur FORMATETC .

  2. Panggil fungsi anggota objek AttachClipboard data untuk mengaitkan objek data dengan data di Clipboard.

  3. Lakukan salah satu hal berikut ini:

    • Panggil fungsi anggota objek IsDataAvailable data jika hanya ada satu atau dua format yang Anda butuhkan. Ini akan menghemat waktu Anda jika data di Clipboard mendukung format yang jauh lebih banyak daripada aplikasi Anda.

      -atau-

    • Panggil fungsi anggota objek BeginEnumFormats data untuk mulai menghitung format yang tersedia di Clipboard. Kemudian panggil GetNextFormat hingga Clipboard mengembalikan format yang didukung aplikasi Anda atau tidak ada lagi format.

Jika Anda menggunakan ON_UPDATE_COMMAND_UI, Anda sekarang dapat mengaktifkan Tempel dan, mungkin, Tempel item Khusus pada menu Edit. Untuk melakukan ini, panggil CMenu::EnableMenuItem atau CCmdUI::Enable. Untuk informasi selengkapnya tentang aplikasi kontainer apa yang harus dilakukan dengan item menu dan kapan, lihat Menu dan Sumber Daya: Penambahan Kontainer.

Mengambil Data dari Objek Data

Setelah Anda memutuskan format data, semua yang tersisa adalah mengambil data dari objek data. Untuk melakukan ini, pengguna memutuskan tempat meletakkan data, dan aplikasi memanggil fungsi yang sesuai. Data akan tersedia di salah satu media berikut:

Menengah Fungsi untuk memanggil
Memori Global (HGLOBAL) COleDataObject::GetGlobalData
File (CFile) COleDataObject::GetFileData
Struktur STGMEDIUM (IStorage) COleDataObject::GetData

Umumnya, media akan ditentukan bersama dengan format Clipboard-nya. Misalnya, objek CF_EMBEDDEDSTRUCT selalu dalam IStorage media yang memerlukan struktur STGMEDIUM . Oleh karena itu, Anda akan menggunakan GetData karena itu adalah satu-satunya fungsi ini yang dapat menerima struktur STGMEDIUM .

Untuk kasus di mana format Clipboard berada dalam medium IStream atau HGLOBAL, kerangka kerja dapat menyediakan penunjuk CFile yang mereferensikan data. Aplikasi kemudian dapat menggunakan file yang dibaca untuk mendapatkan data dengan cara yang sama seperti mungkin mengimpor data dari file. Pada dasarnya, ini adalah antarmuka sisi klien untuk rutinitas OnRenderData dan OnRenderFileData di sumber data.

Pengguna sekarang dapat menyisipkan data ke dalam dokumen seperti untuk data lain dalam format yang sama.

Apa yang ingin Anda ketahui lebih lanjut tentang

Lihat juga

Objek Data dan Sumber Data (OLE)
Kelas COleDataObject
Kelas COleDataSource