次の方法で共有


IXpsOMPageReference::CollectLinkTargets メソッド (xpsobjectmodel.h)

IsHyperlinkTarget プロパティが TRUE に設定されているすべてのドキュメント サブツリー オブジェクトの名前を含む IXpsOMNameCollection インターフェイスを取得します

構文

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

パラメーター

[out, retval] linkTargets

IsHyperlinkTarget プロパティが TRUE に設定されているすべてのドキュメント サブツリー オブジェクトの名前を含む IXpsOMNameCollection インターフェイスへのポインター。 ドキュメントにこのようなオブジェクトが存在しない場合、 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 7、Windows Vista SP2 と Windows Vista 用プラットフォーム更新プログラム [デスクトップ アプリ |UWP アプリ]
サポートされている最小のサーバー Windows Server 2008 R2、Windows Server 2008 SP2 および Windows Server 2008 用プラットフォーム更新プログラム [デスクトップ アプリ |UWP アプリ]
対象プラットフォーム Windows
ヘッダー xpsobjectmodel.h

こちらもご覧ください

IXpsOMNameCollection

IXpsOMPageReference

XML Paper Specification