Compartilhar via


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

Obtém uma interface IXpsOMNameCollection que contém os nomes de todos os objetos de subárvore do documento cuja propriedade IsHyperlinkTarget está definida como TRUE.

Sintaxe

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

Parâmetros

[out, retval] linkTargets

Um ponteiro para uma interface IXpsOMNameCollection que contém os nomes de todos os objetos de subárvore do documento cuja propriedade IsHyperlinkTarget está definida como TRUE. Se nenhum desses objetos existir no documento, a interface IXpsOMNameCollection estará vazia.

Nota Sempre que esse método é chamado, ele retorna uma nova coleção.
 

Retornar valor

Se o método for bem-sucedido, ele retornará S_OK; caso contrário, ele retorna um código de erro HRESULT .

Código de retorno Descrição
S_OK
O método foi bem-sucedido.
E_OUTOFMEMORY
Memória insuficiente para executar essa operação.
E_POINTER
linkTargets é NULL.

Comentários

Se a página for originalmente carregada de um pacote, mas não estiver carregada no modelo de objeto, esse método retornará os valores especificados na marcação PageContent.LinkTargets original.

Se o documento não tiver nenhum destino de link, a coleção de nomes retornada em linkTargets estará vazia.

Para obter o número de elementos na coleção que é retornado em linkTargets, chame o método GetCount da coleção.

Esse método retorna o ponteiro para uma nova coleção sempre que é chamado. Para evitar um vazamento de memória, o ponteiro para uma coleção anterior deve ser liberado quando não for mais necessário ou antes que a variável de ponteiro seja reutilizado para outra chamada a esse método. O exemplo de código a seguir mostra como isso pode ser feito em um 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 Valor
Cliente mínimo com suporte Windows 7, Windows Vista com SP2 e Atualização de Plataforma para Windows Vista [aplicativos da área de trabalho | Aplicativos UWP]
Servidor mínimo com suporte Windows Server 2008 R2, Windows Server 2008 com SP2 e Atualização de Plataforma para Windows Server 2008 [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho xpsobjectmodel.h

Confira também

IXpsOMNameCollection

IXpsOMPageReference

Especificação de Papel XML