Bagikan melalui


Fungsi CreateGenericComposite (objbase.h)

Melakukan komposisi generik dari dua moniker dan memasok pointer ke moniker komposit yang dihasilkan.

Sintaks

HRESULT CreateGenericComposite(
  [in, optional] LPMONIKER pmkFirst,
  [in, optional] LPMONIKER pmkRest,
  [out]          LPMONIKER *ppmkComposite
);

Parameter

[in, optional] pmkFirst

Penunjuk ke moniker untuk disusun di sebelah kiri moniker yang ditunjukkan pmkRest. Dapat menunjuk ke segala jenis moniker, termasuk komposit generik.

[in, optional] pmkRest

Penunjuk ke moniker untuk disusun di sebelah kanan moniker tempat pmkFirst menunjuk . Dapat menunjuk ke segala jenis moniker yang kompatibel dengan jenis moniker pmkRest , termasuk komposit generik.

[out] ppmkComposite

Alamat variabel pointer IMoniker* yang menerima penunjuk antarmuka ke objek moniker komposit yang merupakan hasil pembuatan pmkFirst dan pmkRest. Objek ini mendukung implementasi moniker komposit OLE dari IMoniker. Ketika berhasil, fungsi telah memanggil AddRef pada moniker dan pemanggil bertanggung jawab untuk memanggil Rilis. Jika pmkFirst atau pmkRest adalah NULL, pointer yang disediakan adalah yang bukan NULL. Jika pmkFirst dan pmkRest adalah NULL, atau jika terjadi kesalahan, pointer yang dikembalikan adalah NULL.

Nilai kembali

Fungsi ini dapat mengembalikan nilai pengembalian standar E_OUTOFMEMORY, serta nilai berikut.

Menampilkan kode Deskripsi
S_OK
Moniker input berhasil disusun.
MK_E_SYNTAX
Kedua moniker tidak dapat disusun karena kesalahan dalam sintaks jalur (misalnya, jika pmkFirst dan pmkRest adalah moniker file berdasarkan jalur absolut).

Keterangan

CreateGenericComposite menggabungkan dua moniker menjadi satu. Kelas moniker yang digabungkan dapat berbeda, hanya tunduk pada aturan komposisi. Panggil fungsi ini hanya jika Anda menulis kelas moniker baru dengan mengimplementasikan antarmuka IMoniker , dalam implementasi IMoniker::ComposeWith yang mencakup kemampuan komposisi generik.

Penyedia Moniker harus memanggil ComposeWith untuk menyusun dua moniker bersama-sama. Implementasi ComposeWith harus (seperti halnya implementasi OLE), ketika masuk akal untuk kelas, untuk melakukan komposisi non-generik terlebih dahulu, di mana dua moniker dari kelas yang sama digabungkan. Jika ini tidak memungkinkan, implementasi dapat memanggil CreateGenericComposite untuk melakukan komposisi generik, yang menggabungkan dua moniker dari kelas yang berbeda, dalam aturan komposisi. Anda dapat menentukan jenis komposisi non-generik baru jika Anda menulis kelas moniker baru.

Selama proses pembuatan dua moniker, CreateGenericComposite membuat semua kemungkinan penyederhanaan. Pertimbangkan contoh di mana pmkFirst adalah moniker komposit generik, A + B + C, dan pmkRest adalah moniker komposit generik, C -1 + B -1 + Z (di mana C -1 adalah inversi C). Fungsi pertama-tama menyusun C ke C -1, yang tidak menyusun apa-apa. Kemudian menyusun B dan B -1 menjadi apa-apa. Akhirnya, ia menyusun A ke Z, dan memasok pointer ke moniker komposit generik, A + Z.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 2000 Professional [aplikasi desktop | Aplikasi UWP]
Server minimum yang didukung Windows 2000 Server [aplikasi desktop | Aplikasi UWP]
Target Platform Windows
Header objbase.h
Pustaka Ole32.lib
DLL Ole32.dll
Set API ext-ms-win-com-ole32-l1-1-5 (diperkenalkan dalam Windows 10, versi 10.0.15063)

Lihat juga

IMoniker

IMoniker::ComposeWith