Méthode IMoniker ::P arseDisplayName (objidl.h)

Convertit un nom d’affichage en moniker.

Syntaxe

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

Paramètres

[in] pbc

Pointeur vers l’interface IBindCtx sur le contexte de liaison à utiliser dans cette opération de liaison. Le contexte de liaison met en cache les objets liés pendant le processus de liaison, contient des paramètres qui s’appliquent à toutes les opérations utilisant le contexte de liaison et fournit les moyens par lesquels l’implémentation du moniker doit récupérer des informations sur son environnement.

[in] pmkToLeft

Pointeur vers l’interface IMoniker sur le moniker qui a été créé à partir du nom complet jusqu’à ce stade.

[in] pszDisplayName

Nom d’affichage restant à analyser.

[out] pchEaten

Pointeur vers une variable qui reçoit le nombre de caractères dans pszDisplayName qui ont été consommés dans cette étape.

[out] ppmkOut

Pointeur vers une variable de pointeur IMoniker qui reçoit le pointeur d’interface vers le moniker créé à partir de pszDisplayName. En cas de réussite, l’implémentation doit appeler AddRef sur le nouveau moniker ; il incombe à l’appelant d’appeler Release. Si une erreur se produit, l’implémentation définit *ppmkOut sur NULL.

Valeur retournée

Cette méthode peut retourner les valuesE_OUTOFMEMORY et E_UNEXPECTED de retour standard, ainsi que les valeurs suivantes.

Code de retour Description
S_OK
L’opération d’analyse s’est terminée avec succès.
MK_E_SYNTAX
Erreur dans la syntaxe des composants d’entrée (pmkToLeft, ce moniker et pszDisplayName). Par exemple, un moniker de fichier renvoie cette erreur si pmkToLeft n’a pas la valeur NULL, et un moniker d’élément le renvoie si pmkToLeft a la valeur NULL.
 

Cette méthode peut également retourner les erreurs associées à la méthode IMoniker ::BindToObject .

Remarques

Remarques aux appelants

Les clients Moniker n’appellent généralement pas ParseDisplayName directement. Au lieu de cela, ils appellent la fonction MkParseDisplayName lorsqu’ils souhaitent convertir un nom d’affichage en moniker (par exemple, lors de l’implémentation de la boîte de dialogue Liens pour une application conteneur, ou pour l’implémentation d’un langage de macro qui prend en charge les références à des objets en dehors du document). Cette fonction analyse d’abord la partie initiale du nom d’affichage proprement dit.

Il appelle ensuite ParseDisplayName sur le moniker qu’il vient de créer, en passant le reste du nom d’affichage et en obtenant un nouveau moniker en retour ; cette étape est répétée jusqu’à ce que le nom complet ait été analysé.

Remarques aux implémenteurs

Votre implémentation peut être en mesure d’effectuer cette analyse seule si votre classe moniker est conçue pour désigner uniquement certains types d’objets. Sinon, vous devez obtenir un pointeur d’interface IParseDisplayName pour l’objet identifié par le moniker-so-far (autrement dit, la composition de pmkToLeft et ce moniker), puis retourner les résultats de l’appel de IParseDisplayName ::P arseDisplayName.

Il existe différentes stratégies pour obtenir un pointeur IParseDisplayName , comme suit :

Tous les objets liés doivent être inscrits avec le contexte de liaison (voir IBindCtx ::RegisterObjectBound) pour s’assurer qu’ils restent en cours d’exécution pendant la durée de l’opération d’analyse.

Notes spécifiques à l’implémentation

Implémentation Notes
Anti-moniker Cette méthode retourne E_NOTIMPL.
Moniker de classe Cette méthode analyse le nom d’affichage en se liant à lui-même pour IParseDisplayName et en demandant à l’objet lié d’analyser le nom d’affichage dans un moniker, comme suit.
  hr = BindToObject(pbc, pmkToLeft, IID_IParseDisplayName, (void**)&ppdn);
  if (SUCCEEDED(hr)) {
    hr = ppdn->ParseDisplayName(pbc, lpszDisplayName, pchEaten, ppmkOut);
    ppdn->Release();
  }
  return hr;

Cette méthode tente d’acquérir un pointeur IParseDisplayName , d’abord en lisant à la fabrique de classe pour l’objet identifié par le moniker, puis en l’liant à l’objet lui-même. Si l’une de ces opérations de liaison réussit, le moniker de fichier transmet la partie non préparée du nom complet à la méthode IParseDisplayName ::P arseDisplayName .

Cette méthode retourne MK_E_SYNTAX si pmkToLeft n’a pas la valeur NULL.

Moniker de fichier Cette méthode tente d’acquérir un pointeur IParseDisplayName , d’abord en lisant à la fabrique de classe pour l’objet identifié par le moniker, puis en l’liant à l’objet lui-même. Si l’une de ces opérations de liaison réussit, le moniker de fichier transmet la partie non préparée du nom complet à la méthode IParseDisplayName ::P arseDisplayName .
Moniker composite générique Cette méthode appelle de manière récursive IMoniker ::P arseDisplayName sur le composant le plus à droite du composite, en passant tout le reste en tant que paramètre pmkToLeft pour cet appel.
Moniker d’élément Si pmkToLeft a la valeur NULL, cette méthode retourne MK_E_SYNTAX. Sinon, la méthode appelle IMoniker ::BindToObject sur le paramètre pmkToLeft , en demandant un pointeur d’interface IOleItemContainer . La méthode appelle ensuite IOleItemContainer ::GetObject, en demandant un pointeur d’interface IParseDisplayName vers l’objet identifié par le moniker, puis passe le nom complet à IParseDisplayName ::P arseDisplayName.
MONIKER OBJREF Si pmkToLeft n’a pas la valeur NULL, cette méthode retourne MK_E_SYNTAX.
Moniker de pointeur Cette méthode interroge le pointeur encapsulé pour l’interface IParseDisplayName et transmet le nom d’affichage à IParseDisplayName ::P arseDisplayName.
Moniker d’URL Analyse une chaîne d’URL complète ou partielle dans un moniker de résultat (ppmkOut). Si szDisplayName représente une chaîne d’URL complète (par exemple, «http://foo.com/default.html »), le résultat est un nouveau moniker d’URL complète. Si szDisplayName représente une chaîne d’URL partielle (par exemple, .. \default.html »), le résultat est une URL complète qui prend son contexte à partir du paramètre objet SZ_URLCONTEXT du contexte de liaison ou de ce moniker d’URL. Par exemple, si le moniker de contexte était «http://foo.com/pub/list.html » et szDisplayName était « ». \default.html », le moniker d’URL résultant représente «http://foo.com/default.html ».

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête objidl.h

Voir aussi

IMoniker

IParseDisplayName

MkParseDisplayName