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 |
---|---|
|
Operasi penguraian berhasil diselesaikan. |
|
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:
- Anda dapat mencoba mendapatkan CLSID objek (dengan memanggil IPersist::GetClassID pada objek) lalu memanggil fungsi CoGetClassObject , meminta antarmuka IParseDisplayName pada pabrik kelas yang terkait dengan CLSID tersebut.
- Anda dapat mencoba mengikat objek itu sendiri untuk mendapatkan penunjuk IParseDisplayName .
- Anda dapat mencoba mengikat ke objek yang diidentifikasi oleh pmkToLeft untuk mendapatkan penunjuk IOleItemContainer lalu memanggil IOleItemContainer::GetObject untuk mendapatkan pointer IParseDisplayName untuk item tersebut.
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.
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
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