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