다음을 통해 공유


IXpsOMPageReference::CollectLinkTargets 메서드(xpsobjectmodel.h)

IsHyperlinkTarget 속성이 TRUE로 설정된 모든 문서 하위 트리 개체의 이름을 포함하는 IXpsOMNameCollection 인터페이스를 가져옵니다.

구문

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

매개 변수

[out, retval] linkTargets

IsHyperlinkTarget 속성이 TRUE로 설정된 모든 문서 하위 트리 개체의 이름을 포함하는 IXpsOMNameCollection 인터페이스에 대한 포인터입니다. 문서에 이러한 개체가 없으면 IXpsOMNameCollection 인터페이스가 비어 있습니다.

참고 이 메서드가 호출 될 때마다 새 컬렉션을 반환 합니다.
 

반환 값

메서드가 성공하면 S_OK 반환합니다. 그렇지 않으면 HRESULT 오류 코드를 반환합니다.

반환 코드 Description
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