다음을 통해 공유


데이터 전송 인터페이스

IDataObject 인터페이스는 데이터 소비자에게 개체의 데이터를 가져오고 설정하고, 개체가 지원하는 형식을 결정하고, 개체의 데이터가 변경되면 알림을 등록하고 받는 메서드를 제공합니다. 데이터를 가져올 때 호출자는 데이터를 렌더링할 형식을 지정할 수 있습니다. 그러나 데이터 원본은 호출자가 제공하는 out 매개 변수에서 반환하는 스토리지 매체를 결정합니다.

IDataObject는 그 자체로 애플리케이션에서 Windows 클립보드 전송 또는 복합 문서 전송을 구현하는 데 필요한 모든 도구를 제공합니다. 끌어서 놓기 전송도 지원하려면 IDataObject와 함께 IDropSourceIDropTarget 인터페이스를 구현해야 합니다.

OLE 클립보드 API와 결합된 IDataObject 인터페이스는 Windows 클립보드 API의 모든 기능을 제공합니다. 일반적으로 두 클립보드 API를 모두 사용할 필요는 없습니다. 끌어서 놓기 전송 또는 OLE 복합 문서를 지원하는 데이터 공급자는 IDataObject 인터페이스를 구현해야 합니다. 애플리케이션이 지금 클립보드 전송만 지원하지만 이후 릴리스에서 끌어서 놓기 또는 복합 문서를 추가하려는 경우 나중에 다시 작성 및 디버깅하는 데 소요되는 시간을 최소화하기 위해 IDataObject 및 OLE 클립보드 API를 지금 구현할 수 있습니다. 전역 메모리 이외의 전송 미디어를 활용하기 위해 IDataObject 를 구현할 수도 있습니다.

다음 표에는 지원하려는 데이터 전송 유형에 따라 사용할 데이터가 요약되어 있습니다.

지원하려면 Windows Server Update Services와 함께
복합 문서
Idataobject
전송 끌어서 놓기
IDataObject, IDropSource, IDropTarget, DoDragDrop (또는 해당)
전역 메모리를 단독으로 사용하여 클립보드 전송
클립보드 API
전역 메모리 이외의 교환 매체를 사용하여 클립보드를 전송합니다.
Idataobject
클립보드는 이제 전송되지만 나중에 문서를 끌어서 놓거나 복합 문서로 전송합니다.
IDataObject 및 "끌어서 놓기 전송"을 위해 위에 나열된 인터페이스 및 함수

사용자가 데이터 전송 작업을 시작하면 원본 애플리케이션은 IDataObject의 instance 만들고 이를 통해 데이터를 하나 이상의 형식으로 사용할 수 있게 합니다. 클립보드 전송에서 애플리케이션은 OleSetClipboard 함수를 호출하여 데이터 개체 포인터를 OLE에 전달합니다. (OleSetClipboard는 OLE 버전 1 및 비 OLE 애플리케이션 모두에 대한 표준 클립보드 데이터 형식도 제공합니다.) 끌어서 놓기 전송에서 애플리케이션은 DoDragDrop 함수를 대신 호출합니다.

전송의 수신 쪽에서 대상은 IDropTarget::D rop 호출에 대한 인수로 또는 전송이 끌어서 놓기 또는 클립보드를 위한 것인지에 따라 OleSetClipboard 함수를 호출하여 IDataObject 포인터를 받습니다. 이 포인터를 얻은 대상은 IDataObject::EnumFormatEtc 를 호출하여 검색에 사용할 수 있는 형식과 가져올 수 있는 미디어 유형에 대해 알아봅니다. 이 정보로 무장한 수신 애플리케이션은 IDataObject::GetData를 호출하여 데이터를 요청합니다.

데이터 전송