IXpsOMPageReference::CollectLinkTargets 方法 (xpsobjectmodel.h)
获取一个 IXpsOMNameCollection 接口,该接口包含其 IsHyperlinkTarget 属性设置为 TRUE 的所有文档子树对象的名称。
语法
HRESULT CollectLinkTargets(
[out, retval] IXpsOMNameCollection **linkTargets
);
参数
[out, retval] linkTargets
指向 IXpsOMNameCollection 接口的指针,该接口包含其 IsHyperlinkTarget 属性设置为 TRUE 的所有文档子树对象的名称。 如果文档中不存在此类对象, 则 IXpsOMNameCollection 接口将为空。
注意 每次调用此方法时,它都会返回一个新集合。
返回值
如果 方法成功,则返回S_OK;否则,它将返回 HRESULT 错误代码。
返回代码 | 说明 |
---|---|
|
方法成功。 |
|
内存不足,无法执行此操作。 |
|
linkTargets 为 NULL。 |
注解
如果页面最初是从包加载的,但当前未加载到对象模型中,此方法将返回原始 PageContent.LinkTargets 标记中指定的值。
如果文档没有任何链接目标,则 linkTargets 中返回的名称集合将为空。
若要获取 集合中 linkTargets 中返回的元素数,请调用集合的 GetCount 方法。
每次调用新集合时,此方法都会返回指向该集合的指针。 若要防止内存泄漏,应释放指向上一个集合的指针,当不再需要该指针时,或者在对此方法的另一次调用重复使用指针变量之前释放该指针。 下面的代码示例演示如何在程序中执行此操作。
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();
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 7、带 SP2 的 Windows Vista 和适用于 Windows Vista 的平台更新 [桌面应用 |UWP 应用] |
最低受支持的服务器 | Windows Server 2008 R2、Windows Server 2008 SP2 和适用于 Windows Server 2008 的平台更新 [桌面应用 |UWP 应用] |
目标平台 | Windows |
标头 | xpsobjectmodel.h |