다음을 통해 공유


IDataObject::GetCanonicalFormatEtc 메서드(objidl.h)

잠재적으로 다르지만 논리적으로 동등한 FORMATETC 구조를 제공합니다. 이 메서드를 사용하여 두 개의 다른 FORMATETC 구조가 동일한 데이터를 반환할지 여부를 확인하여 중복 렌더링이 필요하지 않습니다.

구문

HRESULT GetCanonicalFormatEtc(
  [in]  FORMATETC *pformatectIn,
  [out] FORMATETC *pformatetcOut
);

매개 변수

[in] pformatectIn

호출자가 IDataObject::GetData와 같은 후속 호출에서 데이터를 검색하는 데 사용할 형식, 중간 및 대상 디바이스를 정의하는 FORMATETC 구조체에 대한 포인터입니다. 이 경우 tymed 멤버는 중요하지 않으므로 무시해야 합니다.

[out] pformatetcOut

특정 렌더링에 가능한 가장 일반적인 정보를 포함하는 FORMATETC 구조체에 대한 포인터로, pformatetcIn과 정식으로 동일합니다. 호출자는 이 구조를 할당해야 하며 GetCanonicalFormatEtc 메서드는 데이터를 채워야 합니다. IDataObject::GetData와 같은 후속 호출에서 데이터를 검색하기 위해 지정된 값이 NULL이 아닌 한 호출자는 지정된 pformatetcOut 값을 사용합니다. 메서드가 DATA_S_SAMEFORMATETC 반환하는 경우 이 값은 NULL 입니다. 이 경우 tymed 멤버는 중요하지 않으므로 무시해야 합니다.

반환 값

이 메서드는 다음 값을 반환할 수 있습니다.

반환 코드 Description
S_OK
반환된 FORMATETC 구조체는 전달된 구조와 다릅니다.
DATA_S_SAMEFORMATETC
FORMATETC 구조체는 동일하며 NULLpformatetcOut에서 반환됩니다.
DV_E_LINDEX
lindex 값이 잘못되었습니다. 현재 -1만 지원됩니다.
DV_E_FORMATETC
pformatetc 값이 잘못되었습니다.
OLE_E_NOTRUNNING
개체 애플리케이션이 실행되고 있지 않습니다.
E_UNEXPECTED
예기치 않은 오류가 발생했습니다.
E_INVALIDARG
dwDirection 매개 변수가 잘못되었습니다.
E_OUTOFMEMORY
이 작업에 사용할 수 있는 메모리가 부족했습니다.

설명

데이터 개체가 두 개 이상의 요청된 FORMATETC 구조에 대해 정확히 동일한 데이터를 제공할 수 있는 경우 GetCanonicalFormatEtc는 더 복잡한 FORMATETC 구조 집합과 동일한 렌더링을 제공하는 "정식" 또는 표준 FORMATETC를 제공할 수 있습니다. 예를 들어 반환된 데이터는 유사한 FORMATETC 구조 집합 중 하나에 지정된 대상 디바이스에 대해 무감각하게 반환되는 것이 일반적입니다.

발신자에 대한 참고 사항

이 메서드를 호출하면 두 개의 다른 FORMATETC 구조를 지정하는 데이터 개체에서 IDataObject::GetData에 대한 두 개의 호출이 실제로 동일한 렌더링을 생성하여 두 번째 호출이 필요하지 않고 성능이 향상되는지 여부를 결정할 수 있습니다. GetCanonicalFormatEtc를 호출하면 정식 형식이 pformatetcOut 매개 변수에 기록되는 경우 호출자는 IDataObject::GetData에 대한 후속 호출에서 해당 구조를 사용합니다.

구현자에 대한 참고 사항

개념적으로 각 그룹 멤버와 동일한 결과를 제공하는 정식 FORMATETC 로 정의된 그룹에서 FORMATETC 구조를 생각할 수 있습니다. 정식 FORMATETC를 생성할 때 특정 렌더링을 생성하는 가능한 가장 일반적인 정보가 포함되어 있는지 확인해야 합니다.

디바이스별 렌더링을 제공하지 않는 데이터 개체의 경우 이 메서드의 가장 간단한 구현은 입력 FORMATETC를 출력 FORMATETC에 복사하고, 출력 FORMATETCptd 멤버에 NULL을 저장하고, DATA_S_SAMEFORMATETC 반환하는 것입니다.

요구 사항

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

추가 정보

Idataobject