Condividi tramite


Metodo IXpsOMPageReference::CollectLinkTargets (xpsobjectmodel.h)

Ottiene un'interfaccia IXpsOMNameCollection che contiene i nomi di tutti gli oggetti sottoalbero del documento la cui proprietà IsHyperlinkTarget è impostata su TRUE.

Sintassi

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

Parametri

[out, retval] linkTargets

Puntatore a un'interfaccia IXpsOMNameCollection che contiene i nomi di tutti gli oggetti sottoalbero del documento la cui proprietà IsHyperlinkTarget è impostata su TRUE. Se non esistono oggetti di questo tipo nel documento, l'interfaccia IXpsOMNameCollection sarà vuota.

Nota Ogni volta che viene chiamato questo metodo, restituisce una nuova raccolta.
 

Valore restituito

Se il metodo ha esito positivo, restituisce S_OK; in caso contrario, restituisce un codice di errore HRESULT .

Codice restituito Descrizione
S_OK
Il metodo è riuscito.
E_OUTOFMEMORY
Memoria insufficiente per eseguire questa operazione.
E_POINTER
linkTargets è NULL.

Commenti

Se la pagina viene originariamente caricata da un pacchetto ma non è attualmente caricata nel modello a oggetti, questo metodo restituisce i valori specificati nel markup PageContent.LinkTargets originale.

Se il documento non ha destinazioni di collegamento, la raccolta dei nomi restituita in linkTargets sarà vuota.

Per ottenere il numero di elementi nella raccolta restituiti in linkTargets, chiamare il metodo GetCount della raccolta.

Questo metodo restituisce il puntatore a una nuova raccolta ogni volta che viene chiamata. Per evitare una perdita di memoria, il puntatore a una raccolta precedente deve essere rilasciato quando non è più necessario o prima che la variabile puntatore venga riutilizzata per un'altra chiamata a questo metodo. Nell'esempio di codice seguente viene illustrato come eseguire questa operazione in un programma.

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

Requisiti

Requisito Valore
Client minimo supportato Windows 7, Windows Vista con SP2 e Aggiornamento della piattaforma per Windows Vista [app desktop | App UWP]
Server minimo supportato Windows Server 2008 R2, Windows Server 2008 con SP2 e Platform Update per Windows Server 2008 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione xpsobjectmodel.h

Vedi anche

IXpsOMNameCollection

IXpsOMPageReference

XML Paper Specification