Bagikan melalui


Kelas COleDataSource

Bertindak sebagai cache tempat aplikasi menempatkan data yang akan ditawarkannya selama operasi transfer data, seperti operasi Clipboard atau seret dan letakkan.

Sintaks

class COleDataSource : public CCmdTarget

Anggota

Konstruktor Publik

Nama Deskripsi
COleDataSource::COleDataSource Membuat COleDataSource objek.

Metode Publik

Nama Deskripsi
COleDataSource::CacheData Menawarkan data dalam format tertentu menggunakan STGMEDIUM struktur.
COleDataSource::CacheglobalData Menawarkan data dalam format tertentu menggunakan HGLOBAL.
COleDataSource::D elayRenderData Menawarkan data dalam format tertentu menggunakan penyajian tertunda.
COleDataSource::D elayRenderFileData Menawarkan data dalam format tertentu dalam penunjuk CFile .
COleDataSource::D elaySetData Dipanggil untuk setiap format yang didukung di OnSetData.
COleDataSource::D oDragDrop Melakukan operasi seret dan letakkan dengan sumber data.
COleDataSource::Empty Mengolah COleDataSource objek data.
COleDataSource::FlushClipboard Merender semua data ke Clipboard.
COleDataSource::GetClipboardOwner Memverifikasi bahwa data yang ditempatkan di Clipboard masih ada.
COleDataSource::OnRenderData Mengambil data sebagai bagian dari penyajian yang tertunda.
COleDataSource::OnRenderFileData Mengambil data ke dalam CFile sebagai bagian dari penyajian yang tertunda.
COleDataSource::OnRenderglobalData Mengambil data ke dalam HGLOBAL sebagai bagian dari penyajian yang tertunda.
COleDataSource::OnSetData Dipanggil untuk mengganti data dalam COleDataSource objek.
COleDataSource::SetClipboard Tempatkan COleDataSource objek di Clipboard.

Keterangan

Anda dapat membuat sumber data OLE secara langsung. Secara bergantian, kelas COleClientItem dan COleServerItem membuat sumber data OLE sebagai respons terhadap fungsi anggota dan DoDragDrop merekaCopyToClipboard. Lihat COleServerItem::CopyToClipboard untuk deskripsi singkat. Ambil alih OnGetClipboardData fungsi anggota item klien atau kelas item server Anda untuk menambahkan format Clipboard tambahan ke data di sumber data OLE yang dibuat untuk CopyToClipboard fungsi atau DoDragDrop anggota.

Setiap kali Anda ingin menyiapkan data untuk transfer, Anda harus membuat objek kelas ini dan mengisinya dengan data Anda menggunakan metode yang paling tepat untuk data Anda. Cara memasukkannya ke sumber data secara langsung dipengaruhi oleh apakah data segera disediakan (penyajian langsung) atau sesuai permintaan (penyajian tertunda). Untuk setiap format Clipboard tempat Anda menyediakan data dengan meneruskan format Clipboard yang akan digunakan (dan struktur FORMATETC opsional), panggil DelayRenderData.

Untuk informasi selengkapnya tentang sumber data dan transfer data, lihat artikel Objek Data dan Sumber Data (OLE). Selain itu, artikel Topik Clipboard menjelaskan mekanisme Papan Klip OLE.

Hierarki Warisan

CObject

CCmdTarget

COleDataSource

Persyaratan

Header: afxole.h

COleDataSource::CacheData

Panggil fungsi ini untuk menentukan format di mana data ditawarkan selama operasi transfer data.

void CacheData(
    CLIPFORMAT cfFormat,
    LPSTGMEDIUM lpStgMedium,
    LPFORMATETC lpFormatEtc = NULL);

Parameter

cfFormat
Format Clipboard tempat data akan ditawarkan. Parameter ini dapat menjadi salah satu format Clipboard yang telah ditentukan sebelumnya atau nilai yang dikembalikan oleh fungsi Windows RegisterClipboardFormat asli.

lpStgMedium
Menunjuk ke struktur STGMEDIUM yang berisi data dalam format yang ditentukan.

lpFormatEtc
Menunjuk ke struktur FORMATETC yang menjelaskan format di mana data akan ditawarkan. Berikan nilai untuk parameter ini jika Anda ingin menentukan informasi format tambahan di luar format Clipboard yang ditentukan oleh cfFormat. Jika NULL, nilai default digunakan untuk bidang lain dalam FORMATETC struktur.

Keterangan

Anda harus menyediakan data, karena fungsi ini menyediakannya dengan menggunakan penyajian langsung. Data di-cache hingga diperlukan.

Berikan data menggunakan struktur STGMEDIUM . Anda juga dapat menggunakan CacheGlobalData fungsi anggota jika jumlah data yang Anda berikan cukup kecil untuk ditransfer secara efisien menggunakan HGLOBAL.

Setelah panggilan ke CacheData ptd anggota lpFormatEtc dan konten lpStgMedium dimiliki oleh objek data, bukan oleh pemanggil.

Untuk menggunakan penyajian tertunda, panggil fungsi anggota DelayRenderData atau DelayRenderFileData . Untuk informasi selengkapnya tentang penyajian tertunda seperti yang ditangani oleh MFC, lihat artikel Objek Data dan Sumber Data: Manipulasi.

Untuk informasi selengkapnya, lihat struktur STGMEDIUM dan FORMATETC di Windows SDK.

Untuk informasi selengkapnya, lihat RegisterClipboardFormat di Windows SDK.

COleDataSource::CacheglobalData

Panggil fungsi ini untuk menentukan format di mana data ditawarkan selama operasi transfer data.

void CacheGlobalData(
    CLIPFORMAT cfFormat,
    HGLOBAL hGlobal,
    LPFORMATETC lpFormatEtc = NULL);

Parameter

cfFormat
Format Clipboard tempat data akan ditawarkan. Parameter ini dapat menjadi salah satu format Clipboard yang telah ditentukan sebelumnya atau nilai yang dikembalikan oleh fungsi Windows RegisterClipboardFormat asli.

hGlobal
Tangani ke blok memori global yang berisi data dalam format yang ditentukan.

lpFormatEtc
Menunjuk ke struktur FORMATETC yang menjelaskan format di mana data akan ditawarkan. Berikan nilai untuk parameter ini jika Anda ingin menentukan informasi format tambahan di luar format Clipboard yang ditentukan oleh cfFormat. Jika NULL, nilai default digunakan untuk bidang lain dalam FORMATETC struktur.

Keterangan

Fungsi ini menyediakan data menggunakan penyajian langsung, jadi Anda harus menyediakan data saat memanggil fungsi; data di-cache hingga diperlukan. CacheData Gunakan fungsi anggota jika Anda menyediakan sejumlah besar data atau jika Anda memerlukan media penyimpanan terstruktur.

Untuk menggunakan penyajian tertunda, panggil fungsi anggota DelayRenderData atau DelayRenderFileData . Untuk informasi selengkapnya tentang penyajian tertunda seperti yang ditangani oleh MFC, lihat artikel Objek Data dan Sumber Data: Manipulasi.

Untuk informasi selengkapnya, lihat struktur FORMATETC di Windows SDK.

Untuk informasi selengkapnya, lihat RegisterClipboardFormat di Windows SDK.

COleDataSource::COleDataSource

Membuat COleDataSource objek.

COleDataSource();

COleDataSource::D elayRenderData

Panggil fungsi ini untuk menentukan format di mana data ditawarkan selama operasi transfer data.

void DelayRenderData(
    CLIPFORMAT cfFormat,
    LPFORMATETC lpFormatEtc = NULL);

Parameter

cfFormat
Format Clipboard tempat data akan ditawarkan. Parameter ini dapat menjadi salah satu format Clipboard yang telah ditentukan sebelumnya atau nilai yang dikembalikan oleh fungsi Windows RegisterClipboardFormat asli.

lpFormatEtc
Menunjuk ke struktur FORMATETC yang menjelaskan format di mana data akan ditawarkan. Berikan nilai untuk parameter ini jika Anda ingin menentukan informasi format tambahan di luar format Clipboard yang ditentukan oleh cfFormat. Jika NULL, nilai default digunakan untuk bidang lain dalam FORMATETC struktur.

Keterangan

Fungsi ini menyediakan data menggunakan penyajian tertunda, sehingga data tidak segera disediakan. Fungsi anggota OnRenderData atau OnRenderGlobalData dipanggil untuk meminta data.

Gunakan fungsi ini jika Anda tidak akan menyediakan data Anda melalui CFile objek. Jika Anda akan menyediakan data melalui CFile objek, panggil fungsi anggota DelayRenderFileData . Untuk informasi selengkapnya tentang penyajian tertunda seperti yang ditangani oleh MFC, lihat artikel Objek Data dan Sumber Data: Manipulasi.

Untuk menggunakan penyajian langsung, panggil fungsi anggota CacheData atau CacheGlobalData .

Untuk informasi selengkapnya, lihat struktur FORMATETC di Windows SDK.

Untuk informasi selengkapnya, lihat RegisterClipboardFormat di Windows SDK.

COleDataSource::D elayRenderFileData

Panggil fungsi ini untuk menentukan format di mana data ditawarkan selama operasi transfer data.

void DelayRenderFileData(
    CLIPFORMAT cfFormat,
    LPFORMATETC lpFormatEtc = NULL);

Parameter

cfFormat
Format Clipboard tempat data akan ditawarkan. Parameter ini dapat menjadi salah satu format Clipboard yang telah ditentukan sebelumnya atau nilai yang dikembalikan oleh fungsi Windows RegisterClipboardFormat asli.

lpFormatEtc
Menunjuk ke struktur FORMATETC yang menjelaskan format di mana data akan ditawarkan. Berikan nilai untuk parameter ini jika Anda ingin menentukan informasi format tambahan di luar format Clipboard yang ditentukan oleh cfFormat. Jika NULL, nilai default digunakan untuk bidang lain dalam FORMATETC struktur.

Keterangan

Fungsi ini menyediakan data menggunakan penyajian tertunda, sehingga data tidak segera disediakan. Fungsi anggota OnRenderFileData dipanggil untuk meminta data.

Gunakan fungsi ini jika Anda akan menggunakan CFile objek untuk menyediakan data. Jika Anda tidak akan menggunakan CFile objek, panggil fungsi anggota DelayRenderData . Untuk informasi selengkapnya tentang penyajian tertunda seperti yang ditangani oleh MFC, lihat artikel Objek Data dan Sumber Data: Manipulasi.

Untuk menggunakan penyajian langsung, panggil fungsi anggota CacheData atau CacheGlobalData .

Untuk informasi selengkapnya, lihat struktur FORMATETC di Windows SDK.

Untuk informasi selengkapnya, lihat RegisterClipboardFormat di Windows SDK.

COleDataSource::D elaySetData

Panggil fungsi ini untuk mendukung perubahan konten sumber data.

void DelaySetData(
    CLIPFORMAT cfFormat,
    LPFORMATETC lpFormatEtc = NULL);

Parameter

cfFormat
Format Clipboard tempat data ditempatkan. Parameter ini dapat menjadi salah satu format Clipboard yang telah ditentukan sebelumnya atau nilai yang dikembalikan oleh fungsi Windows RegisterClipboardFormat asli.

lpFormatEtc
Menunjuk ke struktur FORMATETC yang menjelaskan format tempat data akan diganti. Berikan nilai untuk parameter ini jika Anda ingin menentukan informasi format tambahan di luar format Clipboard yang ditentukan oleh cfFormat. Jika NULL, nilai default digunakan untuk bidang lain dalam FORMATETC struktur.

Keterangan

OnSetData akan dipanggil oleh kerangka kerja ketika ini terjadi. Ini hanya digunakan ketika kerangka kerja mengembalikan sumber data dari COleServerItem::GetDataSource. Jika DelaySetData tidak dipanggil, fungsi Anda OnSetData tidak akan pernah dipanggil. DelaySetData harus dipanggil untuk setiap Clipboard atau FORMATETC format yang Anda dukung.

Untuk informasi selengkapnya, lihat struktur FORMATETC di Windows SDK.

Untuk informasi selengkapnya, lihat RegisterClipboardFormat di Windows SDK.

COleDataSource::D oDragDrop

DoDragDrop Panggil fungsi anggota untuk melakukan operasi seret dan letakkan untuk sumber data ini, biasanya di handler CWnd::OnLButtonDown.

DROPEFFECT DoDragDrop(
    DWORD dwEffects = DROPEFFECT_COPY|DROPEFFECT_MOVE|DROPEFFECT_LINK,
    LPCRECT lpRectStartDrag = NULL,
    COleDropSource* pDropSource = NULL);

Parameter

dwEffects
Operasi seret dan letakkan yang diizinkan pada sumber data ini. Dapat berupa satu atau beberapa hal berikut:

  • DROPEFFECT_COPY Operasi penyalinan dapat dilakukan.

  • DROPEFFECT_MOVE Operasi pemindahan dapat dilakukan.

  • DROPEFFECT_LINK Tautan dari data yang dihilangkan ke data asli dapat dibuat.

  • DROPEFFECT_SCROLL Menunjukkan bahwa operasi gulir seret dapat terjadi.

lpRectStartDrag
Penunjuk ke persegi panjang yang menentukan di mana seret benar-benar dimulai. Untuk informasi selengkapnya, lihat bagian Komentar berikut ini.

pDropSource
Menunjuk ke sumber drop. Jika NULL maka implementasi default COleDropSource akan digunakan.

Tampilkan Nilai

Efek penurunan yang dihasilkan oleh operasi seret dan letakkan; jika tidak DROPEFFECT_NONE jika operasi tidak pernah dimulai karena pengguna melepaskan tombol mouse sebelum meninggalkan persegi panjang yang disediakan.

Keterangan

Operasi seret dan letakkan tidak segera dimulai. Ini menunggu sampai kursor mouse meninggalkan persegi panjang yang ditentukan oleh lpRectStartDrag atau sampai jumlah milidetik yang ditentukan telah berlalu. Jika lpRectStartDrag adalah NULL, ukuran persegi panjang adalah satu piksel.

Waktu penundaan ditentukan oleh pengaturan kunci registri. Anda dapat mengubah waktu penundaan dengan memanggil CWinApp::WriteProfileString atau CWinApp::WriteProfileInt. Jika Anda tidak menentukan waktu penundaan, nilai default 200 milidetik akan digunakan. Waktu penundaan seret disimpan sebagai berikut:

  • Waktu penundaan Seret Windows NT disimpan di HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\NT\CurrentVersion\IniFileMapping\win.ini\Windows\DragDelay.

  • Waktu penundaan Seret Windows 3.x disimpan di WIN. File INI, di bawah bagian [Windows}.

  • Waktu penundaan Seret Windows 95/98 disimpan dalam versi WIN yang di-cache. INI.

Untuk informasi selengkapnya tentang bagaimana informasi penundaan seret disimpan di registri atau . File INI, lihat WriteProfileString di Windows SDK.

Untuk informasi selengkapnya, lihat artikel OLE seret dan letakkan.

COleDataSource::Empty

Panggil fungsi ini untuk mengosongkan COleDataSource objek data.

void Empty();

Keterangan

Format render cache dan penundaan dikosongkan sehingga dapat digunakan kembali.

Untuk informasi selengkapnya, lihat ReleaseStgMedium di Windows SDK.

COleDataSource::FlushClipboard

Merender data yang ada di Clipboard, lalu memungkinkan Anda menempelkan data dari Clipboard setelah aplikasi Anda dimatikan.

static void PASCAL FlushClipboard();

Keterangan

Gunakan SetClipboard untuk menempatkan data di Clipboard.

COleDataSource::GetClipboardOwner

Menentukan apakah data di Clipboard telah berubah sejak SetClipboard terakhir dipanggil dan, jika demikian, mengidentifikasi pemilik saat ini.

static COleDataSource* PASCAL GetClipboardOwner();

Tampilkan Nilai

Sumber data saat ini pada Clipboard, atau NULL jika tidak ada apa pun di Clipboard atau jika Clipboard tidak dimiliki oleh aplikasi panggilan.

COleDataSource::OnRenderData

Dipanggil oleh kerangka kerja untuk mengambil data dalam format yang ditentukan.

virtual BOOL OnRenderData(
    LPFORMATETC lpFormatEtc,
    LPSTGMEDIUM lpStgMedium);

Parameter

lpFormatEtc
Arahkan ke struktur FORMATETC yang menentukan format di mana informasi diminta.

lpStgMedium
Menunjuk ke struktur STGMEDIUM tempat data akan dikembalikan.

Tampilkan Nilai

Bukan nol jika berhasil; jika tidak, 0.

Keterangan

Format yang ditentukan sebelumnya ditempatkan dalam COleDataSource objek menggunakan fungsi anggota DelayRenderData atau DelayRenderFileData untuk penyajian tertunda. Implementasi default fungsi ini akan memanggil OnRenderFileData atau OnRenderGlobalData jika media penyimpanan yang disediakan masing-masing adalah file atau memori. Jika tidak satu pun dari format ini disediakan, maka implementasi default akan mengembalikan 0 dan tidak melakukan apa pun. Untuk informasi selengkapnya tentang penyajian tertunda seperti yang ditangani oleh MFC, lihat artikel Objek Data dan Sumber Data: Manipulasi.

Jika lpStgMedium-tymed> TYMED_NULL, STGMEDIUM harus dialokasikan dan diisi seperti yang ditentukan oleh lpFormatEtc-tymed.> Jika tidak TYMED_NULL, STGMEDIUM harus diisi dengan data.

Ini adalah pengalih tingkat lanjut. Ambil alih fungsi ini untuk menyediakan data Anda dalam format dan sedang yang diminta. Bergantung pada data Anda, Anda mungkin ingin mengambil alih salah satu versi lain dari fungsi ini sebagai gantinya. Jika data Anda berukuran kecil dan tetap, ambil alih OnRenderGlobalData. Jika data Anda berada dalam file, atau berukuran variabel, ambil alih OnRenderFileData.

Untuk informasi selengkapnya, lihat struktur STGMEDIUM dan FORMATETC , jenis enumerasi TYMED , dan IDataObject::GetData di Windows SDK.

COleDataSource::OnRenderFileData

Dipanggil oleh kerangka kerja untuk mengambil data dalam format yang ditentukan ketika media penyimpanan yang ditentukan adalah file.

virtual BOOL OnRenderFileData(
    LPFORMATETC lpFormatEtc,
    CFile* pFile);

Parameter

lpFormatEtc
Arahkan ke struktur FORMATETC yang menentukan format di mana informasi diminta.

pFile
Menunjuk ke objek CFile tempat data akan dirender.

Tampilkan Nilai

Bukan nol jika berhasil; jika tidak, 0.

Keterangan

Format yang ditentukan sebelumnya ditempatkan dalam COleDataSource objek menggunakan fungsi anggota DelayRenderData untuk penyajian tertunda. Implementasi default fungsi ini hanya mengembalikan FALSE.

Ini adalah pengalih tingkat lanjut. Ambil alih fungsi ini untuk menyediakan data Anda dalam format dan sedang yang diminta. Bergantung pada data Anda, Anda mungkin ingin mengambil alih salah satu versi lain dari fungsi ini sebagai gantinya. Jika Anda ingin menangani beberapa media penyimpanan, ambil alih OnRenderData. Jika data Anda berada dalam file, atau berukuran variabel, ambil alih OnRenderFileData. Untuk informasi selengkapnya tentang penyajian tertunda seperti yang ditangani oleh MFC, lihat artikel Objek Data dan Sumber Data: Manipulasi.

Untuk informasi selengkapnya, lihat struktur FORMATETC dan IDataObject::GetData di Windows SDK.

COleDataSource::OnRenderglobalData

Dipanggil oleh kerangka kerja untuk mengambil data dalam format yang ditentukan ketika media penyimpanan yang ditentukan adalah memori global.

virtual BOOL OnRenderGlobalData(
    LPFORMATETC lpFormatEtc,
    HGLOBAL* phGlobal);

Parameter

lpFormatEtc
Arahkan ke struktur FORMATETC yang menentukan format di mana informasi diminta.

phGlobal
Menunjuk ke handel ke memori global tempat data akan dikembalikan. Jika belum dialokasikan, parameter ini bisa NULL.

Tampilkan Nilai

Bukan nol jika berhasil; jika tidak, 0.

Keterangan

Format yang ditentukan sebelumnya ditempatkan dalam COleDataSource objek menggunakan fungsi anggota DelayRenderData untuk penyajian tertunda. Implementasi default fungsi ini hanya mengembalikan FALSE.

Jika phGlobal adalah NULL, maka HGLOBAL baru harus dialokasikan dan dikembalikan dalam phGlobal. Jika tidak, HGLOBAL yang ditentukan oleh phGlobal harus diisi dengan data. Jumlah data yang ditempatkan di HGLOBAL tidak boleh melebihi ukuran blok memori saat ini. Selain itu, blok tidak dapat dialokasikan ke ukuran yang lebih besar.

Ini adalah pengalih tingkat lanjut. Ambil alih fungsi ini untuk menyediakan data Anda dalam format dan sedang yang diminta. Bergantung pada data Anda, Anda mungkin ingin mengambil alih salah satu versi lain dari fungsi ini sebagai gantinya. Jika Anda ingin menangani beberapa media penyimpanan, ambil alih OnRenderData. Jika data Anda berada dalam file, atau berukuran variabel, ambil alih OnRenderFileData. Untuk informasi selengkapnya tentang penyajian tertunda seperti yang ditangani oleh MFC, lihat artikel Objek Data dan Sumber Data: Manipulasi.

Untuk informasi selengkapnya, lihat struktur FORMATETC dan IDataObject::GetData di Windows SDK.

COleDataSource::OnSetData

Dipanggil oleh kerangka kerja untuk mengatur atau mengganti data dalam COleDataSource objek dalam format yang ditentukan.

virtual BOOL OnSetData(
    LPFORMATETC lpFormatEtc,
    LPSTGMEDIUM lpStgMedium,
    BOOL bRelease);

Parameter

lpFormatEtc
Arahkan ke struktur FORMATETC yang menentukan format tempat data diganti.

lpStgMedium
Menunjuk ke struktur STGMEDIUM yang berisi data yang akan menggantikan konten COleDataSource objek saat ini.

bRelease
Menunjukkan siapa yang memiliki kepemilikan media penyimpanan setelah menyelesaikan panggilan fungsi. Pemanggil memutuskan siapa yang bertanggung jawab untuk merilis sumber daya yang dialokasikan atas nama media penyimpanan. Pemanggil melakukan ini dengan mengatur bRelease. Jika bRelease bukan nol, sumber data mengambil kepemilikan, membebaskan media ketika telah selesai menggunakannya. Ketika bRelease adalah 0, pemanggil mempertahankan kepemilikan dan sumber data dapat menggunakan media penyimpanan hanya selama panggilan.

Tampilkan Nilai

Bukan nol jika berhasil; jika tidak, 0.

Keterangan

Sumber data tidak mengambil kepemilikan data sampai berhasil mendapatkannya. Artinya, tidak mengambil kepemilikan jika OnSetData mengembalikan 0. Jika sumber data mengambil kepemilikan, sumber data membebaskan media penyimpanan dengan memanggil fungsi ReleaseStgMedium .

Implementasi default tidak melakukan apa pun. Ambil alih fungsi ini untuk mengganti data dalam format yang ditentukan. Ini adalah pengalih tingkat lanjut.

Untuk informasi selengkapnya, lihat struktur STGMEDIUM dan FORMATETC dan fungsi ReleaseStgMedium dan IDataObject::GetData di Windows SDK.

COleDataSource::SetClipboard

Menempatkan data yang terkandung dalam COleDataSource objek di Clipboard setelah memanggil salah satu fungsi berikut: CacheData, CacheGlobalData, DelayRenderData, atau DelayRenderFileData.

void SetClipboard();

Lihat juga

Sampel MFC HIERSVR
Sampel MFC OCLIENT
Kelas CCmdTarget
Bagan Hierarki
Kelas COleDataObject