IMoniker ::Inverse, méthode (objidl.h)

Crée un moniker qui est l’inverse de ce moniker. Lorsqu’il est composé à droite de ce moniker ou d’une structure similaire, le moniker ne compose à rien.

Syntaxe

HRESULT Inverse(
  [out] IMoniker **ppmk
);

Paramètres

[out] ppmk

Adresse d’une variable pointeur IMoniker qui reçoit le pointeur d’interface vers un moniker qui est l’inverse de ce moniker. En cas de réussite, l’implémentation doit appeler AddRef sur le nouveau moniker inverse. Il incombe à l’appelant d’appeler Release. Si une erreur se produit, l’implémentation doit définir *ppmk sur NULL.

Valeur retournée

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

Code de retour Description
S_OK
Le moniker inverse a été retourné avec succès.
MK_E_NOINVERSE
La classe moniker n’a pas d’inverse.

Remarques

L’inverse d’un moniker est analogue au répertoire « . ». dans les systèmes de fichiers MS-DOS ; le répertoire .. agit comme l’inverse de tout autre nom de répertoire, car l’ajout de .. à un nom de répertoire entraîne un chemin d’accès vide. De la même façon, l’inverse d’un moniker est généralement également l’inverse de tous les monikers de la même classe. Toutefois, ce n’est pas nécessairement l’inverse d’un moniker d’une classe différente.

L’inverse d’un moniker composite est un composite composé des inverses des composants du moniker d’origine, disposés dans l’ordre inverse. Par exemple, si l’inverse de A est Inv( A ) et que la composite de A, B et C est Comp( A, B, C ), alors

Inv( Comp( A, B, C ) ) est égal à Comp( Inv( C ), Inv( B ), Inv( A ) ).

Tous les monikers n’ont pas d’inverses. La plupart des monikers qui sont eux-mêmes des inverses, comme les anti-monikers, n’ont pas d’inverses. Les monikers qui n’ont pas d’inverse ne peuvent pas avoir des monikers relatifs formés de l’intérieur des objets qu’ils identifient à d’autres objets extérieurs.

Remarques aux appelants

Un objet qui utilise un moniker pour localiser un autre objet ne connaît généralement pas la classe du moniker qu’il utilise. Pour obtenir l’inverse d’un moniker, vous devez toujours appeler IMoniker ::Inverse plutôt que la fonction CreateAntiMoniker , car vous ne pouvez pas être certain que le moniker que vous utilisez considère un anti-moniker comme son inverse.

La méthode Inverse est également appelée par l’implémentation de la méthode IMoniker ::RelativePathTo , pour faciliter la construction d’un moniker relatif.

Remarques aux implémenteurs

Si vos monikers n’ont pas de structure interne, vous pouvez appeler la fonction CreateAntiMoniker dans pour obtenir un anti-moniker dans votre implémentation de IMoniker ::Inverse. Dans votre implémentation de IMoniker ::ComposeWith, vous devez case activée pour l’inverse que vous fournissez dans l’implémentation de Inverse.

Notes spécifiques à l’implémentation

Implémentation Notes
Anti-moniker Cette méthode retourne MK_E_NOINVERSE et définit *ppmk sur NULL.
Moniker de classe Cette méthode retourne un anti-moniker (c’est-à-dire les résultats de l’appel de CreateAntiMoniker).
Moniker de fichier Cette méthode retourne un anti-moniker (c’est-à-dire les résultats de l’appel de CreateAntiMoniker).
Moniker composite générique Cette méthode retourne un moniker composite qui se compose des inverses de chacun des composants du composite d’origine, stockés dans l’ordre inverse. Par exemple, si l’inverse de A est Inv( A ), l’inverse du composite de A, B et C est Comp(Inv( C ), Inv( B ), Inv( A ) ).
Moniker d’élément Cette méthode retourne un anti-moniker (c’est-à-dire les résultats de l’appel de CreateAntiMoniker).
MONIKER OBJREF Cette méthode retourne un anti-moniker (c’est-à-dire les résultats de l’appel de CreateAntiMoniker).
Moniker de pointeur Cette méthode retourne un anti-moniker (c’est-à-dire les résultats de l’appel de CreateAntiMoniker).
Moniker d’URL Cette méthode retourne MK_E_NOINVERSE et définit *ppmk sur NULL.

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

CreateAntiMoniker

IMoniker