다음을 통해 공유


클립보드: OLE 클립보드 메커니즘 사용

OLE는 표준 형식 및 일부 OLE 관련 형식을 사용하여 클립보드를 통해 데이터를 전송합니다.

애플리케이션에서 데이터를 잘라내거나 복사하면 나중에 붙여넣기 작업에서 사용할 데이터가 클립보드에 저장됩니다. 이 데이터는 다양한 형식입니다. 사용자가 클립보드에서 데이터를 붙여넣기로 선택하면 애플리케이션에서 사용할 형식을 선택할 수 있습니다. 사용자가 특수 붙여넣기를 사용하여 특정 형식을 특별히 요청하지 않는 한 가장 많은 정보를 제공하는 형식을 선택하도록 애플리케이션을 작성해야 합니다. 계속하기 전에 OLE(데이터 개체 및 데이터 원본) 항목을 읽을 수 있습니다. 데이터 전송의 작동 방식과 애플리케이션에서 데이터 전송을 구현하는 방법에 대한 기본 사항을 설명합니다.

Windows는 클립보드를 통해 데이터를 전송하는 데 사용할 수 있는 다양한 표준 형식을 정의합니다. 여기에는 메타파일, 텍스트, 비트맵 등이 포함됩니다. OLE는 다양한 OLE 관련 형식도 정의합니다. 이러한 표준 형식에서 제공하는 것보다 더 많은 세부 정보가 필요한 애플리케이션의 경우 고유한 사용자 지정 클립보드 형식을 등록하는 것이 좋습니다. Win32 API 함수 RegisterClipboardFormat 을 사용하여 이 작업을 수행합니다.

예를 들어 Microsoft Excel은 스프레드시트에 대한 사용자 지정 형식을 등록합니다. 이 형식은 비트맵보다 훨씬 더 많은 정보를 전달합니다. 이 데이터를 스프레드시트 형식을 지원하는 애플리케이션에 붙여넣으면 스프레드시트의 모든 수식과 값이 유지되며 필요한 경우 업데이트할 수 있습니다. Microsoft Excel에서는 OLE 항목으로 붙여넣을 수 있도록 데이터를 클립보드에 서식으로 배치합니다. 모든 OLE 문서 컨테이너는 이 정보를 포함된 항목으로 붙여넣을 수 있습니다. 이 포함된 항목은 Microsoft Excel을 사용하여 변경할 수 있습니다. 클립보드에는 스프레드시트에서 선택한 범위 이미지의 간단한 비트맵도 포함되어 있습니다. OLE 문서 컨테이너 또는 비트맵 편집기(예: 그림판)에 붙여넣을 수도 있습니다. 그러나 비트맵의 경우 데이터를 스프레드시트로 조작할 수 있는 방법은 없습니다.

클립보드에서 최대 정보 양을 검색하려면 클립보드에서 데이터를 붙여넣기 전에 애플리케이션에서 이러한 사용자 지정 형식에 대한 검사 합니다.

예를 들어 Cut 명령을 사용하도록 설정하려면 다음과 같은 처리기를 작성할 수 있습니다.

void CMyListView::OnEditCut()
{
   // Create an OLE data source on the heap
   COleDataSource* pData = new COleDataSource;
   // Get the currently selected data
   HGLOBAL hGlob = GlobalAlloc(GMEM_FIXED, 64);
   strcpy_s((char*)hGlob, 64, "Current selection\r\n");
   // For the appropriate data formats...
   pData->CacheGlobalData( CF_TEXT, hGlob );
   // The Clipboard now owns the allocated memory
   // and will delete this data object
   // when new data is put on the Clipboard
   pData->SetClipboard();
}

다음에 대해 자세히 알고 싶은 사항

참고 항목

클립보드