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.
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 |
---|---|
|
El método se ha llevado a cabo de forma correcta. |
|
No hay suficiente memoria para realizar esta operación. |
|
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 |