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.
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 |
---|---|
|
O método foi bem-sucedido. |
|
Memória insuficiente para executar essa operação. |
|
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 |