共用方式為


IXpsOMPageReference::CollectLinkTargets 方法 (xpsobjectmodel.h)

取得 IXpsOMNameCollection 介面,其中包含 IsHyperlinkTarget 屬性設定為 TRUE之所有文件子樹對象的名稱。

語法

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

參數

[out, retval] linkTargets

IXpsOMNameCollection 介面的指標,其中包含IsHyperlinkTarget屬性設定為TRUE之所有文件子樹物件的名稱。 如果文件中沒有這類物件, IXpsOMNameCollection 介面會是空的。

注意 每次呼叫這個方法時,都會傳回新的集合。
 

傳回值

如果方法成功,它會傳回S_OK;否則會傳回 HRESULT 錯誤碼。

傳回碼 描述
S_OK
此方法已成功。
E_OUTOFMEMORY
記憶體不足,無法執行這項作業。
E_POINTER
linkTargetsNULL

備註

如果頁面最初是從封裝載入,但目前未載入物件模型中,這個方法會傳回原始 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 Vista 的 Windows 7、Windows Vista SP2 和平臺更新 [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows Server 2008 R2、Windows Server 2008 SP2 和 Platform Update for Windows Server 2008 [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 xpsobjectmodel.h

另請參閱

IXpsOMNameCollection

IXpsOMPageReference

XML Paper Specification