Metode IMoniker::P arseDisplayName (objidl.h)

Mengonversi nama tampilan menjadi moniker.

Sintaks

HRESULT ParseDisplayName(
  [in]  IBindCtx *pbc,
  [in]  IMoniker *pmkToLeft,
  [in]  LPOLESTR pszDisplayName,
  [out] ULONG    *pchEaten,
  [out] IMoniker **ppmkOut
);

Parameter

[in] pbc

Penunjuk ke antarmuka IBindCtx pada konteks ikatan yang akan digunakan dalam operasi pengikatan ini. Konteks ikatan menyimpan objek yang terikat selama proses pengikatan, berisi parameter yang berlaku untuk semua operasi menggunakan konteks ikatan, dan menyediakan sarana di mana implementasi moniker harus mengambil informasi tentang lingkungannya.

[in] pmkToLeft

Penunjuk ke antarmuka IMoniker pada moniker yang telah dibangun dari nama tampilan hingga saat ini.

[in] pszDisplayName

Nama tampilan yang tersisa yang akan diurai.

[out] pchEaten

Pointer ke variabel yang menerima jumlah karakter dalam pszDisplayName yang digunakan dalam langkah ini.

[out] ppmkOut

Penunjuk ke variabel penunjuk IMoniker yang menerima penunjuk antarmuka ke moniker yang dibangun dari pszDisplayName. Ketika berhasil, implementasi harus memanggil AddRef pada moniker baru; adalah tanggung jawab penelepon untuk memanggil Rilis. Jika terjadi kesalahan, implementasi menetapkan *ppmkOut ke NULL.

Nilai kembali

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

Menampilkan kode Deskripsi
S_OK
Operasi penguraian berhasil diselesaikan.
MK_E_SYNTAX
Kesalahan dalam sintaks komponen input (pmkToLeft, moniker ini, dan pszDisplayName). Misalnya, moniker file mengembalikan kesalahan ini jika pmkToLeftnon-NULL, dan moniker item mengembalikannya jika pmkToLeft adalah NULL.
 

Metode ini juga dapat mengembalikan kesalahan yang terkait dengan metode IMoniker::BindToObject .

Keterangan

Catatan untuk Penelepon

Klien Moniker biasanya tidak memanggil ParseDisplayName secara langsung. Sebaliknya, mereka memanggil fungsi MkParseDisplayName saat ingin mengonversi nama tampilan menjadi moniker (misalnya, dalam mengimplementasikan kotak dialog Tautan untuk aplikasi kontainer, atau untuk mengimplementasikan bahasa makro yang mendukung referensi ke objek di luar dokumen). Fungsi itu terlebih dahulu mengurai bagian awal dari nama tampilan itu sendiri.

Kemudian memanggil ParseDisplayName pada moniker yang baru saja dibuatnya, meneruskan sisa nama tampilan dan mendapatkan moniker baru sebagai imbalannya; langkah ini diulang sampai seluruh nama tampilan telah diurai.

Catatan untuk Pelaksana

Implementasi Anda mungkin dapat melakukan penguraian ini dengan sendirinya jika kelas moniker Anda dirancang untuk hanya menunjuk jenis objek tertentu. Jika tidak, Anda harus mendapatkan penunjuk antarmuka IParseDisplayName untuk objek yang diidentifikasi oleh moniker-so-far (yaitu, komposisi pmkToLeft dan moniker ini) lalu mengembalikan hasil panggilan IParseDisplayName::P arseDisplayName.

Ada berbagai strategi untuk mendapatkan pointer IParseDisplayName , sebagai berikut:

Setiap objek yang terikat harus didaftarkan dengan konteks ikatan (lihat IBindCtx::RegisterObjectBound) untuk memastikan bahwa objek tetap berjalan selama durasi operasi penguraian.

Catatan khusus implementasi

Implementasi Catatan
Anti-moniker Metode ini mengembalikan E_NOTIMPL.
Moniker kelas Metode ini mengurai nama tampilan dengan mengikat dirinya sendiri untuk IParseDisplayName dan meminta objek terikat untuk mengurai nama tampilan menjadi moniker, sebagai berikut.
  hr = BindToObject(pbc, pmkToLeft, IID_IParseDisplayName, (void**)&ppdn);
  if (SUCCEEDED(hr)) {
    hr = ppdn->ParseDisplayName(pbc, lpszDisplayName, pchEaten, ppmkOut);
    ppdn->Release();
  }
  return hr;

Metode ini mencoba memperoleh penunjuk IParseDisplayName , pertama dengan mengikat ke pabrik kelas untuk objek yang diidentifikasi oleh moniker dan kemudian dengan mengikat objek itu sendiri. Jika salah satu operasi pengikatan ini berhasil, moniker file meneruskan bagian nama tampilan yang tidak diuraikan ke metode IParseDisplayName::P arseDisplayName .

Metode ini mengembalikan MK_E_SYNTAX jika pmkToLeft bukan NULL.

Moniker file Metode ini mencoba memperoleh penunjuk IParseDisplayName , pertama dengan mengikat ke pabrik kelas untuk objek yang diidentifikasi oleh moniker dan kemudian dengan mengikat objek itu sendiri. Jika salah satu operasi pengikatan ini berhasil, moniker file meneruskan bagian nama tampilan yang tidak diuraikan ke metode IParseDisplayName::P arseDisplayName .
Moniker komposit generik Metode ini secara rekursif memanggil IMoniker::P arseDisplayName pada komponen paling kanan komposit, meneruskan yang lainnya sebagai parameter pmkToLeft untuk panggilan tersebut.
Moniker item Jika pmkToLeftadalah NULL, metode ini mengembalikan MK_E_SYNTAX. Jika tidak, metode memanggil IMoniker::BindToObject pada parameter pmkToLeft , meminta penunjuk antarmuka IOleItemContainer . Metode ini kemudian memanggil IOleItemContainer::GetObject, meminta penunjuk antarmuka IParseDisplayName ke objek yang diidentifikasi oleh moniker, dan meneruskan nama tampilan ke IParseDisplayName::P arseDisplayName.
Moniker OBJREF Jika pmkToLeft bukan NULL, metode ini mengembalikan MK_E_SYNTAX.
Penunjuk moniker Metode ini meminta pointer yang dibungkus untuk antarmuka IParseDisplayName dan meneruskan nama tampilan ke IParseDisplayName::P arseDisplayName.
Moniker URL Mengurai string URL lengkap atau parsial menjadi moniker hasil (ppmkOut). Jika szDisplayName mewakili string URL lengkap (misalnya, "http://foo.com/default.html"), hasilnya adalah moniker URL lengkap baru. Jika szDisplayName mewakili string URL parsial (misalnya, ".. \default.html"), hasilnya adalah URL lengkap yang mengambil konteksnya dari parameter objek SZ_URLCONTEXT konteks ikat atau dari moniker URL ini. Misalnya, jika moniker konteks adalah "http://foo.com/pub/list.html" dan szDisplayName adalah ".. \default.html", moniker URL yang dihasilkan akan mewakili "http://foo.com/default.html".

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

IParseDisplayName

MkParseDisplayName