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 |
---|---|
|
Awalan umum ada yang bukan moniker ini atau pmkOther. |
|
Tidak ada awalan umum. |
|
Seluruh pmkOther adalah awalan dari moniker ini. |
|
Kedua moniker identik. |
|
Moniker ini adalah awalan dari pmkOther moniker. |
|
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:
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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk