IXpsOMPageReference::CollectLinkTargets-Methode (xpsobjectmodel.h)
Ruft eine IXpsOMNameCollection-Schnittstelle ab, die die Namen aller Dokumentunterstrukturobjekte enthält, deren IsHyperlinkTarget-Eigenschaft auf TRUE festgelegt ist.
Syntax
HRESULT CollectLinkTargets(
[out, retval] IXpsOMNameCollection **linkTargets
);
Parameter
[out, retval] linkTargets
Ein Zeiger auf eine IXpsOMNameCollection-Schnittstelle , die die Namen aller Dokumentunterstrukturobjekte enthält, deren IsHyperlinkTarget-Eigenschaft auf TRUE festgelegt ist. Wenn keine solchen Objekte im Dokument vorhanden sind, ist die IXpsOMNameCollection-Schnittstelle leer.
Rückgabewert
Wenn die Methode erfolgreich ist, wird S_OK zurückgegeben. Andernfalls wird ein HRESULT-Fehlercode zurückgegeben.
Rückgabecode | BESCHREIBUNG |
---|---|
|
Die Methode wurde erfolgreich ausgeführt. |
|
Nicht genügend Arbeitsspeicher, um diesen Vorgang auszuführen. |
|
linkTargets ist NULL. |
Hinweise
Wenn die Seite ursprünglich aus einem Paket geladen, aber derzeit nicht im Objektmodell geladen wird, gibt diese Methode die im ursprünglichen PageContent.LinkTargets-Markup angegebenen Werte zurück.
Wenn das Dokument keine Linkziele enthält, ist die in linkTargets zurückgegebene Namensauflistung leer.
Um die Anzahl der Elemente in der Auflistung abzurufen, die in linkTargets zurückgegeben wird, rufen Sie die GetCount-Methode der Auflistung auf.
Diese Methode gibt bei jedem Aufruf den Zeiger auf eine neue Auflistung zurück. Um einen Speicherverlust zu verhindern, sollte der Zeiger auf eine vorherige Auflistung freigegeben werden, wenn sie nicht mehr benötigt wird oder bevor die Zeigervariable für einen anderen Aufruf dieser Methode wiederverwendet wird. Das folgende Codebeispiel zeigt, wie dies in einem Programm erfolgen kann.
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();
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 7, Windows Vista mit SP2 und Plattformupdate für Windows Vista [Desktop-Apps | UWP-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2008 R2, Windows Server 2008 mit SP2 und Plattformupdate für Windows Server 2008 [Desktop-Apps | UWP-Apps] |
Zielplattform | Windows |
Kopfzeile | xpsobjectmodel.h |