Bagikan melalui


Metode IMoniker::RelativePathTo (objidl.h)

Membuat moniker relatif antara moniker ini dan moniker yang ditentukan.

Sintaks

HRESULT RelativePathTo(
  [in]  IMoniker *pmkOther,
  [out] IMoniker **ppmkRelPath
);

Parameter

[in] pmkOther

Penunjuk ke antarmuka IMoniker pada moniker tempat jalur relatif harus diambil.

[out] ppmkRelPath

Penunjuk ke variabel penunjuk IMoniker yang menerima penunjuk antarmuka ke moniker relatif. Jika berhasil, implementasi harus memanggil AddRef pada moniker baru; adalah tanggung jawab pemanggil untuk memanggil Rilis. Jika terjadi kesalahan, implementasi menetapkan *ppmkRelPath ke NULL.

Nilai kembali

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

Menampilkan kode Deskripsi
S_OK
Metode berhasil diselesaikan.
MK_S_HIM
Tidak ada awalan umum yang dibagikan oleh dua moniker dan moniker yang dikembalikan dalam ppmkRelPath adalah pmkOther.
MK_E_NOTBINDABLE
Moniker ini adalah moniker relatif, seperti moniker item. Moniker ini harus terdiri dari moniker kontainernya sebelum jalur relatif dapat ditentukan.

Keterangan

Moniker relatif dianalogikan dengan jalur relatif (seperti ".. \backup"). Misalnya, Anda memiliki satu moniker yang mewakili jalur "c:\projects\secret\art\pict1.bmp" dan moniker lain yang mewakili jalur "c:\projects\secret\docs\chap1.txt". Memanggil RelativePathTo pada moniker pertama, melewati yang kedua sebagai parameter pmkOther , akan membuat moniker relatif yang mewakili jalur ".. \docs\chap1.txt".

Catatan untuk Penelepon

Klien Moniker biasanya tidak perlu memanggil RelativePathTo. Metode ini dipanggil terutama oleh handler default untuk objek tertaut. Objek tertaut berisi moniker absolut dan relatif untuk mengidentifikasi sumber tautan. (Ini memungkinkan pelacakan tautan jika pengguna memindahkan pohon direktori yang berisi kontainer dan file sumber.) Handler default memanggil metode ini untuk membuat moniker relatif dari dokumen kontainer ke sumber tautan. (Artinya, ia memanggil RelativePathTo pada moniker yang mengidentifikasi dokumen kontainer, meneruskan moniker yang mengidentifikasi sumber tautan sebagai parameter pmkOther .)

Jika Anda memanggil RelativePathTo, sebut saja hanya pada moniker absolut, misalnya, moniker file atau moniker komposit yang komponen paling kirinya adalah moniker file, di mana moniker file mewakili jalur absolut. Jangan panggil metode ini pada moniker relatif.

Catatan untuk Pelaksana

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

Langkah pertama dalam menentukan jalur relatif adalah menentukan awalan umum dari moniker dan pmkOther ini. Langkah selanjutnya adalah memecah moniker ini dan pmkOther menjadi dua bagian masing-masing, katakanlah (P, myTail) dan (P, otherTail) masing-masing, di mana P adalah awalan umum. Jalur relatif yang benar kemudian merupakan inversi dari myTail yang disusupi dengan otherTail:

Comp( Inv( myTail ), otherTail )

di mana Comp() mewakili operasi komposisi dan Inv() mewakili operasi terbalik.

Untuk jenis moniker tertentu, Anda tidak dapat menggunakan metode IMoniker::Inverse untuk membangun inversi myTail. Misalnya, moniker file mengembalikan anti-moniker sebagai terbalik, sementara metode RelativePathTo-nya harus menggunakan satu atau beberapa moniker file yang masing-masing mewakili jalur ".." untuk membangun inversi myTail.

Catatan khusus implementasi

Implementasi Catatan
Anti-moniker Metode ini mengembalikan MK_S_HIM dan mengatur *ppmkRelPath ke moniker lainnya.
Moniker kelas Metode ini mengembalikan hasil panggilan MonikerRelativePathTo dengan pmkSrc yang sama dengan moniker ini, pmkOther, ppmkRelPath, dan TRUE sebagai dwReserved.
Moniker file Metode ini menghitung moniker yang ketika terdiri dari kanan moniker ini menghasilkan moniker lainnya. Misalnya, jika jalur moniker ini adalah "C:\work\docs\report.doc" dan jika moniker lainnya adalah "C:\work\art\picture.bmp", jalur moniker komputasi adalah ".. \.. \art\picture.bmp".
Moniker komposit generik Metode ini menemukan awalan umum dari dua moniker dan membuat dua moniker yang terdiri dari sisanya ketika awalan umum dihapus. Kemudian menciptakan inversi untuk sisa moniker ini dan menyusun sisa moniker lain di sebelah kanannya.
Moniker item Metode ini mengembalikan MK_E_NOTBINDABLE dan mengatur *ppmkRelPath ke NULL.
Moniker OBJREF Metode ini mengembalikan E_NOTIMPL.
Penunjuk moniker Metode ini mengembalikan E_NOTIMPL.
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

MonikerRelativePathTo