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
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