Compartir a través de


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

Obtiene una interfaz IXpsOMNameCollection que contiene los nombres de todos los objetos de subárbol del documento cuya propiedad IsHyperlinkTarget está establecida en TRUE.

Sintaxis

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

Parámetros

[out, retval] linkTargets

Puntero a una interfaz IXpsOMNameCollection que contiene los nombres de todos los objetos de subárbol del documento cuya propiedad IsHyperlinkTarget está establecida en TRUE. Si no existen estos objetos en el documento, la interfaz IXpsOMNameCollection estará vacía.

Nota Cada vez que se llama a este método, devuelve una nueva colección.
 

Valor devuelto

Si el método se realiza correctamente, devuelve S_OK; de lo contrario, devuelve un código de error HRESULT .

Código devuelto Descripción
S_OK
El método se ha llevado a cabo de forma correcta.
E_OUTOFMEMORY
No hay suficiente memoria para realizar esta operación.
E_POINTER
linkTargets es NULL.

Comentarios

Si la página se carga originalmente desde un paquete, pero no se carga actualmente en el modelo de objetos, este método devuelve los valores especificados en el marcado PageContent.LinkTargets original.

Si el documento no tiene ningún destino de vínculo, la colección de nombres devuelta en linkTargets estará vacía.

Para obtener el número de elementos de la colección que se devuelve en linkTargets, llame al método GetCount de la colección.

Este método devuelve el puntero a una nueva colección cada vez que se llama a . Para evitar una fuga de memoria, el puntero a una colección anterior debe liberarse cuando ya no sea necesario o antes de que se vuelva a usar la variable de puntero para otra llamada a este método. En el ejemplo de código siguiente se muestra cómo se puede hacer esto en un programa.

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

Requisitos

Requisito Value
Cliente mínimo compatible Windows 7, Windows Vista con SP2 y Platform Update para Windows Vista [aplicaciones de escritorio | Aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2008 R2, Windows Server 2008 con SP2 y Actualización de plataforma para Windows Server 2008 [aplicaciones de escritorio | Aplicaciones para UWP]
Plataforma de destino Windows
Encabezado xpsobjectmodel.h

Consulte también

IXpsOMNameCollection

IXpsOMPageReference

XML Paper Specification