Fungsi MkParseDisplayName (objbase.h)

Mengonversi string menjadi moniker yang mengidentifikasi objek yang dinamai oleh string.

Fungsi ini adalah inversi dari operasi IMoniker::GetDisplayName , yang mengambil nama tampilan yang terkait dengan moniker.

Sintaks

HRESULT MkParseDisplayName(
  [in]  LPBC      pbc,
  [in]  LPCOLESTR szUserName,
  [out] ULONG     *pchEaten,
  [out] LPMONIKER *ppmk
);

Parameter

[in] pbc

Penunjuk ke antarmuka IBindCtx pada objek konteks ikatan yang akan digunakan dalam operasi pengikatan ini.

[in] szUserName

Penunjuk ke nama tampilan yang akan diurai.

[out] pchEaten

Penunjuk ke jumlah karakter szUserName yang digunakan. Jika fungsi berhasil, *pchEaten adalah panjang szUserName; jika tidak, jumlah karakter berhasil diurai.

[out] ppmk

Alamat variabel pointer IMoniker* yang menerima penunjuk antarmuka ke moniker yang dibangun dari szUserName. Ketika berhasil, fungsi telah memanggil AddRef pada moniker dan pemanggil bertanggung jawab untuk memanggil Rilis. Jika terjadi kesalahan, penunjuk antarmuka yang ditentukan akan berisi sebanyak moniker yang dapat dibuat metode sebelum kesalahan terjadi.

Nilai kembali

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

Menampilkan kode Deskripsi
S_OK
Operasi penguraian berhasil dan moniker dibuat.
MK_E_SYNTAX
Kesalahan dalam sintaks nama file atau kesalahan dalam sintaks moniker komposit yang dihasilkan.
 

Fungsi ini juga dapat mengembalikan salah satu nilai kesalahan yang dikembalikan oleh IMoniker::BindToObject, IOleItemContainer::GetObject, atau IParseDisplayName::P arseDisplayName.

Keterangan

Fungsi MkParseDisplayName mengurai nama yang dapat dibaca manusia ke dalam moniker yang dapat digunakan untuk mengidentifikasi sumber tautan. Moniker yang dihasilkan dapat menjadi moniker sederhana (seperti moniker file), atau dapat menjadi komposit generik yang terdiri dari potongan moniker komponen. Misalnya, nama tampilan "c:\mydir\somefile!item 1"

dapat diuraikan ke dalam moniker komposit generik berikut: FileMoniker berdasarkan "c:\mydir\somefile") + (ItemMoniker berdasarkan "item 1").

Penggunaan MkParseDisplayName yang paling umum adalah dalam implementasi kotak dialog Tautan standar, yang memungkinkan pengguna akhir menentukan sumber objek tertaut dengan mengetik dalam string. Anda mungkin juga perlu memanggil MkParseDisplayName jika aplikasi Anda mendukung bahasa makro yang mengizinkan referensi jarak jauh (referensi ke elemen di luar dokumen).

Mengurai nama tampilan sering kali memerlukan aktivasi objek yang sama yang akan diaktifkan selama operasi pengikatan, sehingga bisa sama mahalnya (dalam hal performa) sebagai pengikatan. Objek yang terikat selama operasi penguraian di-cache dalam konteks ikatan yang diteruskan ke fungsi. Jika Anda berencana untuk mengikat moniker yang dikembalikan oleh MkParseDisplayName, yang terbaik adalah melakukannya segera setelah fungsi kembali, menggunakan konteks ikat yang sama, yang menghapus kebutuhan untuk mengaktifkan objek untuk kedua kalinya.

MkParseDisplayName mengurai sebanyak nama tampilan seperti yang dipahami menjadi moniker. Fungsi kemudian memanggil IMoniker::P arseDisplayName pada moniker yang baru dibuat, meneruskan sisa nama tampilan. Moniker yang dikembalikan oleh ParseDisplayName terdiri ke akhir moniker yang ada dan, jika salah satu nama tampilan tetap tidak diuraikan, ParseDisplayName dipanggil pada hasil komposisi. Proses ini diulang sampai seluruh nama tampilan telah diurai.

MkParseDisplayName mencoba strategi berikut untuk mengurai awal nama tampilan, menggunakan yang pertama yang berhasil:

  1. Fungsi ini terlihat dalam Tabel Objek Yang Berjalan untuk moniker file yang sesuai dengan semua awalan nama tampilan yang hanya terdiri dari karakter nama file yang valid. Strategi ini dapat mengidentifikasi dokumen yang belum disimpan.
  2. Fungsi ini memeriksa awalan maksimal nama tampilan, yang hanya terdiri dari karakter nama file yang valid, untuk melihat apakah dokumen OLE 1 didaftarkan dengan nama tersebut. Dalam hal ini, moniker yang dikembalikan adalah moniker internal yang disediakan oleh lapisan kompatibilitas OLE 1 OLE 2.
  3. Fungsi ini berkonsultasi dengan sistem file untuk memeriksa apakah awalan nama tampilan cocok dengan file yang ada. Nama file dapat berupa drive-absolut, drive-relative, working-directory relative, atau dimulai dengan nama berbagi jaringan eksplisit. Ini adalah kasus umum.
  4. Jika karakter awal nama tampilan adalah '@', fungsi menemukan string terpanjang segera setelahnya yang sesuai dengan sintaks ProgID hukum. Fungsi mengonversi string ini menjadi CLSID menggunakan fungsi CLSIDFromProgID . Jika CLSID mewakili kelas OLE 2, fungsi memuat objek kelas yang sesuai dan meminta penunjuk antarmuka IParseDisplayName . Antarmuka IParseDisplayName yang dihasilkan kemudian diberikan seluruh string untuk diurai, dimulai dengan '@'. Jika CLSID mewakili kelas OLE 1, maka fungsi memperlakukan string mengikuti ProgID sebagai penanda tautan OLE1/DDE yang memiliki sintaksitemnama| file.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 2000 Professional [aplikasi desktop | Aplikasi UWP]
Server minimum yang didukung Windows 2000 Server [aplikasi desktop | Aplikasi UWP]
Target Platform Windows
Header objbase.h
Pustaka Ole32.lib
DLL Ole32.dll
Set API ext-ms-win-com-ole32-l1-1-1 (diperkenalkan dalam Windows 8.1)

Lihat juga

IMoniker::GetDisplayName

IMoniker::P arseDisplayName

IParseDisplayName