Fungsi OleCreateFromData (ole2.h)
Membuat objek yang disematkan dari objek transfer data yang diambil baik dari clipboard atau sebagai bagian dari operasi seret dan letakkan OLE. Ini dimaksudkan untuk digunakan untuk mengimplementasikan penempelan dari operasi seret dan letakkan OLE.
Sintaks
HRESULT OleCreateFromData(
[in] LPDATAOBJECT pSrcDataObj,
[in] REFIID riid,
[in] DWORD renderopt,
[in] LPFORMATETC pFormatEtc,
[in] LPOLECLIENTSITE pClientSite,
[in] LPSTORAGE pStg,
[out] LPVOID *ppvObj
);
Parameter
[in] pSrcDataObj
Penunjuk ke antarmuka IDataObject pada objek transfer data yang menyimpan data tempat objek dibuat.
[in] riid
Referensi ke pengidentifikasi antarmuka yang kemudian digunakan pemanggil untuk berkomunikasi dengan objek baru (biasanya IID_IOleObject, yang didefinisikan dalam header OLE sebagai pengidentifikasi antarmuka untuk IOleObject).
[in] renderopt
Nilai dari enumerasi OLERENDER yang menunjukkan kemampuan gambar atau pengambilan data yang baru dibuat secara lokal adalah memiliki objek yang baru dibuat. Pertimbangan tambahan dijelaskan di bagian Keterangan berikut.
[in] pFormatEtc
Arahkan ke nilai dari enumerasi OLERENDER yang menunjukkan kemampuan gambar atau pengambilan data yang baru dibuat secara lokal. Nilai OLERENDER yang dipilih memengaruhi nilai yang mungkin untuk parameter pFormatEtc .
[in] pClientSite
Arahkan ke instans IOleClientSite, antarmuka utama tempat objek akan meminta layanan dari kontainernya. Parameter ini bisa NULL.
[in] pStg
Arahkan ke antarmuka IStorage pada objek penyimpanan. Parameter ini mungkin bukan NULL.
[out] ppvObj
Alamat variabel pointer yang menerima pointer antarmuka yang diminta dalam riid. Setelah berhasil kembali, *ppvObj berisi penunjuk antarmuka yang diminta pada objek yang baru dibuat.
Nilai kembali
Fungsi ini mengembalikan S_OK pada keberhasilan. Nilai lain yang mungkin termasuk yang berikut ini.
Menampilkan kode | Deskripsi |
---|---|
|
Menunjukkan OLE hanya dapat membuat objek statis. |
|
Tidak ada format yang dapat diterima yang tersedia untuk pembuatan objek. |
Keterangan
Fungsi OleCreateFromData membuat objek yang disematkan dari objek transfer data yang mendukung antarmuka IDataObject . Objek data dalam hal ini adalah jenis yang diambil dari clipboard dengan panggilan ke fungsi OleGetClipboard atau merupakan bagian dari operasi seret dan letakkan OLE (objek data diteruskan ke panggilan ke IDropTarget::D rop).
Jika format clipboard FileName atau FileNameW (CF_FILENAME) ada di objek transfer data, dan CF_EMBEDDEDOBJECT atau CF_EMBEDSOURCE tidak ada, OleCreateFromData terlebih dahulu mencoba membuat paket yang berisi file yang ditunjukkan. Umumnya, dibutuhkan format pertama yang tersedia.
Jika OleCreateFromData tidak dapat membuat paket, OleCreateFromData mencoba membuat objek menggunakan format CF_EMBEDDEDOBJECT. Jika format tersebut tidak tersedia, OleCreateFromData mencoba membuatnya dengan format CF_EMBEDSOURCE. Jika tidak ada format ini yang tersedia dan objek transfer data mendukung antarmuka IPersistStorage , OleCreateFromData memanggil IPersistStorage::Save objek untuk menyimpan objek itu sendiri.
Jika objek tertaut yang ada dipilih, lalu disalin, objek tersebut muncul di clipboard sebagai objek lain yang dapat disematkan. Akibatnya, operasi tempel yang memanggil OleCreateFromData dapat membuat objek tertaut. Setelah operasi tempel, kontainer harus memanggil fungsi QueryInterface , meminta IID_IOleLink (didefinisikan dalam header OLE sebagai pengidentifikasi antarmuka untuk IOleLink), untuk menentukan apakah objek tertaut dibuat.
Gunakan parameter renderopt dan pFormatetc untuk mengontrol kemampuan penembolokan objek yang baru dibuat. Untuk informasi umum tentang menggunakan interaksi parameter ini untuk menentukan apa yang akan di-cache, lihat enumerasi OLERENDER . Namun, ada beberapa efek spesifik tambahan dari parameter ini dalam cara OleCreateFromData menginisialisasi cache.
Ketika OleCreateFromData menggunakan format CF_EMBEDDEDOBJECT atau clipboard CF_EMBEDSOURCE untuk membuat objek yang disematkan, perbedaan utama antara keduanya adalah tempat data inisialisasi cache disimpan:
- CF_EMBEDDEDOBJECT menunjukkan bahwa sumber adalah objek tersemat yang ada. Ini sudah memiliki dalam cache data yang sesuai, dan OLE menggunakan data ini untuk menginisialisasi cache objek baru.
- CF_EMBEDSOURCE menunjukkan bahwa objek data sumber berisi informasi inisialisasi cache dalam format selain CF_EMBEDSOURCE. OleCreateFromData menggunakan ini untuk menginisialisasi cache objek yang baru disematkan.
Nilai | Deskripsi |
---|---|
OLERENDER_DRAW & OLERENDER_FORMAT | Jika informasi presentasi yang akan di-cache saat ini ada di kumpulan inisialisasi cache yang sesuai, informasi tersebut akan digunakan. (Lokasi yang sesuai berada di cache objek data sumber untuk CF_EMBEDDEDOBJECT, dan dalam format lain dalam objek data sumber untuk CF_EMBEDSOURCE.) Jika informasi tidak ada, cache awalnya kosong, tetapi akan diisi saat pertama kali objek dijalankan. Tidak ada format lain yang di-cache di objek yang baru dibuat. |
OLERENDER_NONE | Tidak ada yang akan di-cache di objek yang baru dibuat. Jika sumber memiliki format CF_EMBEDDEDOBJECT, data cache yang sudah ada yang telah disalin akan dihapus. |
OLERENDER_ASIS | Jika sumber memiliki format CF_EMBEDDEDOBJECT, cache objek baru berisi data cache yang sama dengan objek sumber. Untuk CF_EMBEDSOURCE, tidak ada yang akan di-cache di objek yang baru dibuat. Opsi ini harus digunakan oleh kontainer yang lebih canggih. Setelah panggilan ini, kontainer tersebut akan memanggil IOleCache::Cache dan IOleCache::Uncache untuk menyiapkan dengan tepat apa yang akan di-cache. Untuk CF_EMBEDSOURCE, mereka kemudian juga akan memanggil IOleCache::InitCache. |
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 2000 Professional [hanya aplikasi desktop] |
Server minimum yang didukung | Windows 2000 Server [hanya aplikasi desktop] |
Target Platform | Windows |
Header | ole2.h |
Pustaka | Ole32.lib |
DLL | Ole32.dll |
Set API | ext-ms-win-com-ole32-l1-1-3 (diperkenalkan dalam Windows 10, versi 10.0.10240) |