Bagikan melalui


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
OLE_E_STATIC
Menunjukkan OLE hanya dapat membuat objek statis.
DV_E_FORMATETC
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 renderopt memengaruhi inisialisasi cache sebagai berikut.
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)

Lihat juga

IDataObject

OleCreate