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

데이터 개체에서 지원하는 형식을 열거하는 개체를 만듭니다.

구문

HRESULT EnumFormatEtc(
  [in]  DWORD          dwDirection,
  [out] IEnumFORMATETC **ppenumFormatEtc
);

매개 변수

[in] dwDirection

데이터의 방향입니다. 가능한 값은 DATADIR 열거형에서 가져옵니다.

DATADIR_GET 값은 IDataObject::GetData 호출에 전달할 수 있는 형식을 열거합니다. DATADIR_SET 값은 IDataObject::SetData 호출에 전달할 수 있는 형식을 열거합니다.

[out] ppenumFormatEtc

새 열거자 개체에 대한 인터페이스 포인터를 수신하는 IEnumFORMATETC 포인터 변수에 대한 포인터입니다.

반환 값

이 메서드는 성공에 대한 S_OK 반환합니다. 다른 가능한 값은 다음과 같습니다.

반환 코드 설명
E_INVALIDARG
제공된 dwDirection 이 잘못되었습니다.
E_OUTOFMEMORY
이 작업에 사용할 수 있는 메모리가 부족합니다.
E_NOTIMPL
dwDirection으로 지정된 방향은 지원되지 않습니다.
OLE_S_USEREG
OLE에서 레지스트리의 형식을 열거하도록 요청할 경우

설명

EnumFormatEtc 는 데이터 개체가 FORMATETC 구조에서 데이터를 설명할 수 있는 모든 방법을 결정하는 데 사용할 수 있는 열거자 개체를 만들고 해당 IEnumFORMATETC 인터페이스에 대한 포인터를 제공합니다. 표준 열거자 인터페이스 중 하나입니다.

발신자에게 참고 사항

포인터를 가져온 호출자는 IEnumFORMATETC의 열거형 메서드를 호출하여 FORMATETC 구조를 열거할 수 있습니다. 형식은 시간이 지남에 따라 변경될 수 있으므로 시간이 지남에 따라 형식이 변경될 수 있으므로 열거형 형식이 현재 지원된다는 보장은 없습니다. 따라서 애플리케이션은 열거형을 전달할 수 있는 형식 형식의 힌트로 처리해야 합니다. 호출자는 열거자로 완료되면 Release 를 호출해야 합니다.

EnumFormatEtc 는 다음 작업 중 하나가 발생할 때 호출됩니다.

  • 애플리케이션은 OleSetClipboard를 호출합니다. OLE는 클립보드에 배치할 데이터와 클립보드에 OLE 1 호환성 형식을 배치해야 하는지 여부를 결정해야 합니다.
  • 데이터가 클립보드에서 붙여넣거나 삭제됩니다. 애플리케이션은 첫 번째 허용 형식을 사용합니다.
  • 특수 붙여넣기 대화 상자가 표시됩니다. 대상 애플리케이션은 FORMATETC 항목의 형식 목록을 빌드합니다.

구현자에 대한 참고 사항

형식은 레지스트리에서 정적으로 등록하거나 개체를 초기화하는 동안 동적으로 등록할 수 있습니다. 개체에 변경되지 않는 형식 목록이 있고 이러한 형식이 레지스트리에 등록된 경우 OLE는 레지스트리의 특정 CLSID에 등록된 형식을 열거할 수 있는 FORMATETC 열거형 개체의 구현을 제공합니다. IEnumFORMATETC 인터페이스에 대한 포인터는 도우미 함수 OleRegEnumFormatEtc에 대한 호출을 통해 사용할 수 있습니다. 따라서 이 경우 이 함수를 호출하여 EnumFormatEtc 메서드를 구현할 수 있습니다.

EXE 애플리케이션은 OLE_S_USEREG 값을 반환하는 메서드를 구현하여 동일한 작업을 효과적으로 수행할 수 있습니다. 이 반환 값은 기본 개체 처리기에 OleRegEnumFormatEtc를 호출하도록 지시합니다. DLL 개체 애플리케이션으로 구현된 개체 애플리케이션은 OLE_S_USEREG 반환할 수 없으므로 OleRegEnumFormatEtc 를 직접 호출해야 합니다.

레지스트리의 RequestDataFormats 또는 SetDataFormats 키에 등록된 경우 OLE 1 개체에 대해 프라이빗 형식을 열거할 수 있습니다. 또한 GetDataFormats 또는 SetDataFormats 키에 등록된 경우 OLE 개체(OLE 1 이후의 모든 버전)에 대해 프라이빗 형식을 열거할 수 있습니다.

레지스트리에 등록된 RequestDataFormats 또는 SetDataFormats 정보가 서버에 없는 OLE 1 개체의 경우 DATADIR_GET 전달하는 EnumFormatEtc 에 대한 호출은 이러한 형식을 지원하는지 또는 다른 형식을 지원하는지에 관계없이 네이티브 및 메타파일 형식만 열거합니다. 이러한 개체에서 DATADIR_SET 전달하는 EnumFormatEtc 호출은 개체가 다른 형식으로 설정되도록 지원하는지 여부에 관계없이 네이티브만 열거합니다.

열거형에서 반환된 FORMATETC 구조체는 일반적으로 NULL 대상 디바이스(ptd)를 나타냅니다. 이는 FORMATETC의 다른 멤버와 달리 대상 디바이스가 SetData 또는 GetData 호출에서 데이터를 수락하거나 제공할 수 있는지 여부에 대한 개체의 결정에 참여하지 않기 때문에 적절합니다.

FORMATETCtymed 멤버는 종종 둘 이상의 스토리지 매체 종류가 허용됨을 나타냅니다. 항상 부울 OR 연산자를 사용하여 이를 마스크하고 테스트해야 합니다.

요구 사항

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

추가 정보

Formatetc

IDataObject::GetData

IDataObject::SetData

IEnumFORMATETC

OleRegEnumFormatEtc