Bagikan melalui


Metode IMoniker::CommonPrefixWith (objidl.h)

Membuat moniker baru berdasarkan awalan yang dimiliki moniker ini sama dengan moniker yang ditentukan.

Sintaks

HRESULT CommonPrefixWith(
  [in]  IMoniker *pmkOther,
  [out] IMoniker **ppmkPrefix
);

Parameter

[in] pmkOther

Penunjuk ke antarmuka IMoniker pada moniker lain untuk dibandingkan dengan yang ini untuk menentukan apakah ada awalan umum.

[out] ppmkPrefix

Alamat variabel pointer IMoniker* yang menerima penunjuk antarmuka ke moniker yang merupakan awalan umum dari moniker ini dan pmkOther. Jika berhasil, implementasi harus memanggil AddRef pada moniker yang dihasilkan; adalah tanggung jawab pemanggil untuk memanggil Rilis. Jika terjadi kesalahan atau jika tidak ada awalan umum, implementasi harus mengatur *ppmkPrefix ke NULL.

Nilai kembali

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

Menampilkan kode Deskripsi
S_OK
Awalan umum ada yang bukan moniker ini atau pmkOther.
MK_S_NOPREFIX
Tidak ada awalan umum.
MK_S_HIM
Seluruh pmkOther adalah awalan dari moniker ini.
MK_S_US
Kedua moniker identik.
MK_S_ME
Moniker ini adalah awalan dari pmkOther moniker.
MK_S_NOTBINDABLE
Metode ini dipanggil pada moniker relatif. Tidak berarti untuk mengambil awalan umum pada moniker relatif.

Keterangan

CommonPrefixWith membuat moniker baru yang terdiri dari awalan umum moniker pada objek moniker ini dan moniker lainnya. Misalnya, jika satu moniker mewakili jalur "c:\projects\secret\art\pict1.bmp" dan moniker lain mewakili jalur "c:\projects\secret\docs\chap1.txt", awalan umum dari kedua moniker ini adalah moniker yang mewakili jalur "c:\projects\secret".

Catatan untuk Penelepon

Metode CommonPrefixWith terutama dipanggil dalam implementasi metode IMoniker::RelativePathTo . Klien yang menggunakan moniker untuk menemukan objek yang jarang perlu memanggil metode ini.

Panggil metode ini hanya jika pmkOther dan moniker ini adalah moniker absolut. Moniker absolut adalah moniker file atau komposit generik yang komponen paling kirinya adalah moniker file yang mewakili jalur absolut. Jangan sebut metode ini pada moniker relatif karena tidak akan menghasilkan hasil yang bermakna.

Catatan untuk Pelaksana

Implementasi Anda harus terlebih dahulu menentukan apakah pmkOther adalah moniker dari kelas yang Anda kenali dan yang dapat Anda berikan penanganan khusus (misalnya, jika kelasnya sama dengan moniker ini). Jika demikian, implementasi Anda harus menentukan awalan umum dari dua moniker. Jika tidak, moniker harus meneruskan kedua moniker dalam panggilan ke fungsi MonikerCommonPrefixWith , yang menangani kasus generik dengan benar.

Catatan khusus implementasi

Implementasi Catatan
Anti-moniker Jika moniker lain juga anti-moniker, metode mengembalikan MK_S_US dan mengatur ppmkPrefix ke moniker ini. Jika tidak, metode memanggil fungsi MonikerCommonPrefixWith . Fungsi ini menangani kasus dengan benar di mana moniker lainnya adalah komposit generik.
Moniker kelas Jika pmkOther sama dengan moniker ini, mengambil pointer ke moniker ini dan mengembalikan MK_S_US. Jika pmkOther adalah moniker kelas tetapi tidak sama dengan moniker ini, mengembalikan MK_E_NOPREFIX. Jika tidak, mengembalikan hasil panggilan MonikerCommonPrefixWith dengan sendirinya sebagai pmkThis, pmkOther, dan ppmkPrefix, yang menangani kasus di mana pmkOther adalah moniker komposit generik.
Moniker file Jika kedua moniker adalah moniker file, metode ini mengembalikan moniker file yang didasarkan pada komponen umum di awal dua moniker file. Komponen moniker file dapat berupa jenis berikut:
  • Nama komputer dari formulir \\server\share. Nama komputer diperlakukan sebagai komponen tunggal, sehingga dua moniker yang mewakili jalur "\\myserver\public\work" dan "\\myserver\private\games" tidak memiliki "\\myserver" sebagai awalan umum.
  • Pentunjukan drive (misalnya, "C:").
  • Direktori atau nama file.
Jika moniker lain bukan moniker file, metode ini meneruskan kedua moniker dalam panggilan ke fungsi MonikerCommonPrefixWith . Fungsi ini menangani kasus dengan benar di mana moniker lainnya adalah komposit generik.

Metode ini mengembalikan MK_E_NOPREFIX jika tidak ada awalan umum.

Moniker komposit generik Jika moniker lainnya adalah komposit, metode ini membandingkan komponen setiap komposit dari kiri ke kanan. Moniker awalan umum yang dikembalikan mungkin juga merupakan moniker komposit, tergantung pada berapa banyak komponen paling kiri yang umum bagi kedua moniker. Jika moniker lain bukan komposit, metode ini hanya membandingkannya dengan komponen paling kiri moniker ini.

Jika moniker sama, metode mengembalikan MK_S_US dan mengatur ppmkPrefix ke moniker ini. Jika moniker lain adalah awalan dari moniker ini, metode mengembalikan MK_S_HIM dan mengatur ppmkPrefix ke moniker lainnya. Jika moniker ini adalah awalan dari yang lain, metode ini mengembalikan MK_S_ME dan mengatur ppmkPrefix ke moniker ini.

Jika tidak ada awalan umum, metode ini mengembalikan MK_E_NOPREFIX dan mengatur ppmkPrefix ke NULL.

Moniker item Jika moniker lainnya adalah moniker item yang sama dengan moniker ini, metode ini menetapkan *ppmkPrefix ke moniker ini dan mengembalikan MK_S_US; jika tidak, metode memanggil fungsi MonikerCommonPrefixWith . Fungsi ini menangani kasus dengan benar di mana moniker lainnya adalah komposit generik.
Moniker OBJREF Jika kedua moniker sama, metode ini mengembalikan MK_S_US dan menetapkan *ppmkPrefix ke NULL. Jika moniker lain bukan moniker OBJREF, metode ini meneruskan kedua moniker ke fungsi MonikerCommonPrefixWith . Fungsi ini menangani kasus dengan benar di mana moniker lainnya adalah komposit generik.

Jika tidak ada awalan umum, metode ini mengembalikan MK_E_NOPREFIX.

Penunjuk moniker Jika kedua moniker sama, metode ini mengembalikan MK_S_US dan menetapkan *ppmkPrefix ke moniker ini. Jika tidak, metode mengembalikan MK_E_NOPREFIX dan mengatur *ppmkPrefix ke NULL.
Moniker URL Metode ini mengembalikan E_NOTIMPL.

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 objidl.h

Lihat juga

IMoniker

MonikerCommonPrefixWith