Freigeben über


IXpsOMPageReference::CollectLinkTargets-Methode (xpsobjectmodel.h)

Ruft eine IXpsOMNameCollection-Schnittstelle ab, die die Namen aller Dokumentunterstrukturobjekte enthält, deren IsHyperlinkTarget-Eigenschaft auf TRUE festgelegt ist.

Syntax

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

Parameter

[out, retval] linkTargets

Ein Zeiger auf eine IXpsOMNameCollection-Schnittstelle , die die Namen aller Dokumentunterstrukturobjekte enthält, deren IsHyperlinkTarget-Eigenschaft auf TRUE festgelegt ist. Wenn keine solchen Objekte im Dokument vorhanden sind, ist die IXpsOMNameCollection-Schnittstelle leer.

Hinweis Jedes Mal, wenn diese Methode aufgerufen wird, gibt sie eine neue Auflistung zurück.
 

Rückgabewert

Wenn die Methode erfolgreich ist, wird S_OK zurückgegeben. Andernfalls wird ein HRESULT-Fehlercode zurückgegeben.

Rückgabecode BESCHREIBUNG
S_OK
Die Methode wurde erfolgreich ausgeführt.
E_OUTOFMEMORY
Nicht genügend Arbeitsspeicher, um diesen Vorgang auszuführen.
E_POINTER
linkTargets ist NULL.

Hinweise

Wenn die Seite ursprünglich aus einem Paket geladen, aber derzeit nicht im Objektmodell geladen wird, gibt diese Methode die im ursprünglichen PageContent.LinkTargets-Markup angegebenen Werte zurück.

Wenn das Dokument keine Linkziele enthält, ist die in linkTargets zurückgegebene Namensauflistung leer.

Um die Anzahl der Elemente in der Auflistung abzurufen, die in linkTargets zurückgegeben wird, rufen Sie die GetCount-Methode der Auflistung auf.

Diese Methode gibt bei jedem Aufruf den Zeiger auf eine neue Auflistung zurück. Um einen Speicherverlust zu verhindern, sollte der Zeiger auf eine vorherige Auflistung freigegeben werden, wenn sie nicht mehr benötigt wird oder bevor die Zeigervariable für einen anderen Aufruf dieser Methode wiederverwendet wird. Das folgende Codebeispiel zeigt, wie dies in einem Programm erfolgen kann.

    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();

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 7, Windows Vista mit SP2 und Plattformupdate für Windows Vista [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 R2, Windows Server 2008 mit SP2 und Plattformupdate für Windows Server 2008 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile xpsobjectmodel.h

Weitere Informationen

IXpsOMNameCollection

IXpsOMPageReference

XML Paper Specification