IMoniker::P arseDisplayName 메서드(objidl.h)

표시 이름을 모니커로 변환합니다.

구문

HRESULT ParseDisplayName(
  [in]  IBindCtx *pbc,
  [in]  IMoniker *pmkToLeft,
  [in]  LPOLESTR pszDisplayName,
  [out] ULONG    *pchEaten,
  [out] IMoniker **ppmkOut
);

매개 변수

[in] pbc

이 바인딩 작업에 사용할 바인딩 컨텍스트의 IBindCtx 인터페이스에 대한 포인터입니다. 바인딩 컨텍스트는 바인딩 프로세스 중에 바인딩된 개체를 캐시하고, 바인딩 컨텍스트를 사용하여 모든 작업에 적용되는 매개 변수를 포함하며, 모니커 구현이 환경에 대한 정보를 검색해야 하는 수단을 제공합니다.

[in] pmkToLeft

이 시점까지 표시 이름에서 빌드된 모니커의 IMoniker 인터페이스에 대한 포인터입니다.

[in] pszDisplayName

구문 분석할 나머지 표시 이름입니다.

[out] pchEaten

이 단계에서 사용된 pszDisplayName 의 문자 수를 수신하는 변수에 대한 포인터입니다.

[out] ppmkOut

pszDisplayName에서 빌드된 모니커에 대한 인터페이스 포인터를 수신하는 IMoniker 포인터 변수에 대한 포인터입니다. 성공하면 구현은 새 모니커에서 AddRef 를 호출해야 합니다. 릴리스를 호출하는 것은 호출자의 책임입니다. 오류가 발생하면 구현에서 *ppmkOutNULL로 설정합니다.

반환 값

이 메서드는 다음 값뿐만 아니라 표준 반환 valuesE_OUTOFMEMORY 및 E_UNEXPECTED 반환할 수 있습니다.

반환 코드 Description
S_OK
구문 분석 작업이 성공적으로 완료되었습니다.
MK_E_SYNTAX
입력 구성 요소 구문의 오류(pmkToLeft, 이 모니커 및 pszDisplayName). 예를 들어 pmkToLeftNULL이 아닌 경우 파일 모니커가 이 오류를 반환하고, pmkToLeftNULL인 경우 항목 모니커가 이 오류를 반환합니다.
 

이 메서드는 IMoniker::BindToObject 메서드와 연결된 오류를 반환할 수도 있습니다.

설명

발신자에게 참고 사항

모니커 클라이언트는 일반적으로 ParseDisplayName을 직접 호출하지 않습니다. 대신, 표시 이름을 모니커로 변환하려는 경우(예: 컨테이너 애플리케이션에 대한 링크 대화 상자를 구현하거나 문서 외부의 개체에 대한 참조를 지원하는 매크로 언어를 구현하는 경우) MkParseDisplayName 함수를 호출합니다. 이 함수는 먼저 표시 이름 자체의 초기 부분을 구문 분석합니다.

그런 다음 방금 만든 모니커에서 ParseDisplayName 을 호출하여 표시 이름의 나머지 부분을 전달하고 그 대가로 새 모니커를 가져옵니다. 이 단계는 전체 표시 이름이 구문 분석될 때까지 반복됩니다.

구현자에 대한 참고 사항

모니커 클래스가 특정 종류의 개체만 지정하도록 설계된 경우 구현에서 이 구문 분석 자체를 수행할 수 있습니다. 그렇지 않으면 지금까지 모니커로 식별된 개체(즉, pmkToLeft 및 이 모니커의 컴퍼지션)에 대한 IParseDisplayName 인터페이스 포인터를 가져와서 IParseDisplayName::P arseDisplayName을 호출한 결과를 반환해야 합니다.

다음과 같이 IParseDisplayName 포인터를 가져오기 위한 다양한 전략이 있습니다.

바인딩된 모든 개체는 바인딩 컨텍스트( IBindCtx::RegisterObjectBound 참조)에 등록하여 구문 분석 작업 기간 동안 계속 실행되도록 해야 합니다.

구현별 참고 사항

구현 참고
안티 모니커 이 메서드는 E_NOTIMPL 반환합니다.
클래스 모니커 이 메서드는 IParseDisplayName 자체에 바인딩하고 다음과 같이 표시 이름을 모니커로 구문 분석하도록 바인딩된 개체에 요청하여 표시 이름을 구문 분석합니다.
  hr = BindToObject(pbc, pmkToLeft, IID_IParseDisplayName, (void**)&ppdn);
  if (SUCCEEDED(hr)) {
    hr = ppdn->ParseDisplayName(pbc, lpszDisplayName, pchEaten, ppmkOut);
    ppdn->Release();
  }
  return hr;

이 메서드는 먼저 모니커로 식별된 개체의 클래스 팩터리에 바인딩한 다음 개체 자체에 바인딩하여 IParseDisplayName 포인터를 획득하려고 합니다. 이러한 바인딩 작업 중 하나에 성공하면 파일 모니커가 표시 이름의 분리되지 않은 부분을 IParseDisplayName::P arseDisplayName 메서드에 전달합니다.

pmkToLeftNULL이 아닌 경우 이 메서드는 MK_E_SYNTAX 반환합니다.

파일 모니커 이 메서드는 먼저 모니커로 식별된 개체의 클래스 팩터리에 바인딩한 다음 개체 자체에 바인딩하여 IParseDisplayName 포인터를 획득하려고 합니다. 이러한 바인딩 작업 중 하나에 성공하면 파일 모니커가 표시 이름의 분리되지 않은 부분을 IParseDisplayName::P arseDisplayName 메서드에 전달합니다.
제네릭 복합 모니커 이 메서드는 복합의 맨 오른쪽 구성 요소에서 IMoniker::P arseDisplayName 을 재귀적으로 호출하여 다른 모든 항목을 해당 호출에 대한 pmkToLeft 매개 변수로 전달합니다.
항목 모니커 pmkToLeftNULL이면 이 메서드는 MK_E_SYNTAX 반환합니다. 그렇지 않으면 메서드는 pmkToLeft 매개 변수에서 IMoniker::BindToObject를 호출하고 IOleItemContainer 인터페이스 포인터를 요청합니다. 그런 다음 메서드는 IOleItemContainer::GetObject를 호출하여 모니커로 식별된 개체에 대한 IParseDisplayName 인터페이스 포인터를 요청하고 표시 이름을 IParseDisplayName::P arseDisplayName에 전달합니다.
OBJREF 모니커 pmkToLeftNULL이 아니면 이 메서드는 MK_E_SYNTAX 반환합니다.
포인터 모니커 이 메서드는 IParseDisplayName 인터페이스에 대해 래핑된 포인터를 쿼리하고 표시 이름을 IParseDisplayName::P arseDisplayName에 전달합니다.
URL 모니커 전체 또는 부분 URL 문자열을 결과 모니커(ppmkOut)로 구문 분석합니다. szDisplayName이 전체 URL 문자열(예: "http://foo.com/default.html")을 나타내는 경우 결과는 새 전체 URL 모니커입니다. szDisplayName이 부분 URL 문자열(예: ".)을 나타내는 경우 \default.html") 결과는 바인딩 컨텍스트의 SZ_URLCONTEXT 개체 매개 변수 또는 이 URL 모니커에서 컨텍스트를 가져오는 전체 URL입니다. 예를 들어 컨텍스트 모니커가 "http://foo.com/pub/list.html"이고 szDisplayName 이 ".인 경우. \default.html" 결과 URL 모니커는 "http://foo.com/default.html"를 나타냅니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 objidl.h

추가 정보

Imoniker

IParseDisplayName

MkParseDisplayName