Partager via


Méthode IXpsOMPageReference ::CollectLinkTargets (xpsobjectmodel.h)

Obtient une interface IXpsOMNameCollection qui contient les noms de tous les objets de sous-arborescence de document dont la propriété IsHyperlinkTarget a la valeur TRUE.

Syntaxe

HRESULT CollectLinkTargets(
  [out, retval] IXpsOMNameCollection **linkTargets
);

Paramètres

[out, retval] linkTargets

Pointeur vers une interface IXpsOMNameCollection qui contient les noms de tous les objets de sous-arborescence de document dont la propriété IsHyperlinkTarget a la valeur TRUE. Si aucun objet de ce type n’existe dans le document, l’interface IXpsOMNameCollection est vide.

Note Chaque fois que cette méthode est appelée, elle retourne une nouvelle collection.
 

Valeur retournée

Si la méthode réussit, elle retourne S_OK ; sinon, elle retourne un code d’erreur HRESULT .

Code de retour Description
S_OK
S_OK
E_OUTOFMEMORY
Mémoire insuffisante pour effectuer cette opération.
E_POINTER
linkTargets a la valeur NULL.

Remarques

Si la page est initialement chargée à partir d’un package, mais qu’elle n’est pas actuellement chargée dans le modèle objet, cette méthode retourne les valeurs spécifiées dans le balisage PageContent.LinkTargets d’origine.

Si le document n’a pas de cibles de lien, la collection de noms retournée dans linkTargets est vide.

Pour obtenir le nombre d’éléments de la collection retournés dans linkTargets, appelez la méthode GetCount de la collection.

Cette méthode retourne le pointeur vers une nouvelle collection chaque fois qu’elle est appelée. Pour éviter une fuite de mémoire, le pointeur vers une collection précédente doit être libéré lorsqu’il n’est plus nécessaire ou avant que la variable pointeur soit réutilisée pour un autre appel à cette méthode. L’exemple de code suivant montre comment procéder dans un programme.

    HRESULT                         hr = S_OK;
    IXpsOMPage                      *page = NULL;
    IXpsOMNameCollection            *linkTargets = NULL;

    UINT32 numTargets = 0;
    UINT32 thisTarget = 0;
    LPWSTR thisTargetName = NULL;

    // pageRef contains the current page reference 

    // if the page hasn't been loaded yet, for example, if the XPS OM 
    //  was loaded from an XPS document, CollectLinkTargets obtains the
    //  list of link targets from the <PageContent.LinkTargets> markup
    hr = pageRef->CollectLinkTargets(&linkTargets);

    // get the page content of this page reference
    hr = pageRef->GetPage (&page);

    // after the page object has been loaded and calling GetPage or 
    //  by creating a page in the XPS OM, CollectLinkTargets will now check
    //  each of the page elements to return the list so this call to
    //  CollectLinkTargets might take longer to return than the previous
    //  call above if the XPS OM was created from a file
    linkTargets->Release(); // release previous collection
    hr = pageRef->CollectLinkTargets(&linkTargets);
    
    // walk the list of link targets returned
    hr = linkTargets->GetCount( &numTargets );
    thisTarget = 0;
    while (thisTarget < numTargets) {
        hr = linkTargets->GetAt (thisTarget, &thisTargetName);
        printf ("%s\n", thisTargetName);
        // release the target string returned to prevent memory leaks
        CoTaskMemFree (thisTargetName);
        // get next target in list
        thisTarget++;
    }
    // release page and the link target collection
    page->Release();
    linkTargets->Release();

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 7, Windows Vista avec SP2 et Mise à jour de plateforme pour Windows Vista [applications de bureau | Applications UWP]
Serveur minimal pris en charge Windows Server 2008 R2, Windows Server 2008 avec SP2 et Platform Update pour Windows Server 2008 [applications de bureau | Applications UWP]
Plateforme cible Windows
En-tête xpsobjectmodel.h

Voir aussi

IXpsOMNameCollection

IXpsOMPageReference

XML Paper Specification