다음을 통해 공유


COleDataSource 클래스

애플리케이션이 데이터를 넣어 두었다 클립보드 또는 끌어 놓기 작업과 같은 데이터 전송 작업에서 해당 데이터를 제공하는 캐시의 역할을 합니다.

구문

class COleDataSource : public CCmdTarget

멤버

공용 생성자

속성 설명
COleDataSource::COleDataSource COleDataSource 개체를 생성합니다.

공용 메서드

이름 설명
COleDataSource::CacheData 구조를 사용하여 지정된 형식의 STGMEDIUM 데이터를 제공합니다.
COleDataSource::CacheGlobalData HGLOBAL을 사용하여 지정된 형식의 데이터를 제공합니다.
COleDataSource::D elayRenderData 지연된 렌더링을 사용하여 지정된 형식의 데이터를 제공합니다.
COleDataSource::D elayRenderFileData 포인터에서 지정된 형식의 CFile 데이터를 제공합니다.
COleDataSource::D elaySetData 에서 지원되는 모든 형식에 대해 호출됩니다 OnSetData.
COleDataSource::D oDragDrop 데이터 원본을 사용하여 끌어서 놓기 작업을 수행합니다.
COleDataSource::Empty 데이터 개체를 COleDataSource 비웁니다.
COleDataSource::FlushClipboard 모든 데이터를 클립보드에 렌더링합니다.
COleDataSource::GetClipboardOwner 클립보드에 배치된 데이터가 여전히 있는지 확인합니다.
COleDataSource::OnRenderData 지연된 렌더링의 일부로 데이터를 검색합니다.
COleDataSource::OnRenderFileData 지연된 렌더링의 일부로 데이터를 CFile 검색합니다.
COleDataSource::OnRenderGlobalData 지연된 렌더링의 일부로 HGLOBAL로 데이터를 검색합니다.
COleDataSource::OnSetData 개체의 데이터를 바꾸기 위해 호출됩니다 COleDataSource .
COleDataSource::SetClipboard 클립보드에 개체를 배치합니다 COleDataSource .

설명

OLE 데이터 원본을 직접 만들 수 있습니다. 또는 COleClientItemCOleServerItem 클래스는 해당 및 DoDragDrop 멤버 함수에 대한 응답으로 OLE 데이터 원본을 CopyToClipboard 만듭니다. 간략한 설명은 COleServerItem::CopyToClipboard를 참조하세요. 클라이언트 항목 또는 서버 항목 클래스의 멤버 함수를 재정 OnGetClipboardData 의하여 또는 DoDragDrop 멤버 함수에 대해 만든 OLE 데이터 원본의 데이터에 클립보드 형식을 CopyToClipboard 추가합니다.

전송을 위해 데이터를 준비할 때마다 이 클래스의 개체를 만들고 데이터에 가장 적합한 방법을 사용하여 데이터로 채워야 합니다. 데이터 원본에 삽입되는 방법은 데이터가 즉시 제공되는지(즉시 렌더링) 또는 요청 시(지연된 렌더링) 여부에 의해 직접 영향을 받습니다. 사용할 클립보드 형식(및 선택적 FORMATETC 구조)을 전달하여 데이터를 제공하는 모든 클립보드 형식에 대해 DelayRenderData를 호출합니다.

데이터 원본 및 데이터 전송에 대한 자세한 내용은 OLE(데이터 개체 및 데이터 원본) 문서를 참조하세요. 또한 클립보드 항목 문서에서 OLE 클립보드 메커니즘에 대해 설명합니다.

상속 계층 구조

CObject

CCmdTarget

COleDataSource

요구 사항

헤더: afxole.h

COleDataSource::CacheData

이 함수를 호출하여 데이터 전송 작업 중에 데이터가 제공되는 형식을 지정합니다.

void CacheData(
    CLIPFORMAT cfFormat,
    LPSTGMEDIUM lpStgMedium,
    LPFORMATETC lpFormatEtc = NULL);

매개 변수

cfFormat
데이터를 제공하는 클립보드 형식입니다. 이 매개 변수는 미리 정의된 클립보드 형식 또는 네이티브 Windows RegisterClipboardFormat 함수에서 반환된 값 중 하나일 수 있습니다 .

lpStgMedium
지정된 형식의 데이터를 포함하는 STGMEDIUM 구조를 가리킵니다.

lpFormatEtc
데이터를 제공하는 형식을 설명하는 FORMATETC 구조를 가리킵니다. cfFormat에서 지정한 클립보드 형식 이외의 추가 형식 정보를 지정하려면 이 매개 변수에 대한 값을 제공합니다. NULL인 경우 구조체의 다른 필드에 기본값이 FORMATETC 사용됩니다.

설명

이 함수는 즉시 렌더링을 사용하여 데이터를 제공하므로 데이터를 제공해야 합니다. 데이터는 필요할 때까지 캐시됩니다.

STGMEDIUM 구조를 사용하여 데이터를 제공합니다. 제공 중인 데이터의 양이 HGLOBAL을 사용하여 효율적으로 전송될 수 있을 만큼 작은 경우 멤버 함수를 사용할 CacheGlobalData 수도 있습니다.

lpStgMediumlpFormatEtc 멤버 및 콘텐츠에 대한 호출 CacheData ptd 후 호출자가 아닌 데이터 개체가 소유합니다.

지연된 렌더링을 사용하려면 DelayRenderData 또는 DelayRenderFileData 멤버 함수를 호출합니다. MFC에서 처리하는 지연 렌더링에 대한 자세한 내용은 데이터 개체 및 데이터 원본: 조작 문서를 참조하세요.

자세한 내용은 Windows SDK의 STGMEDIUMFORMATETC 구조를 참조하세요.

자세한 내용은 Windows SDK의 RegisterClipboardFormat 을 참조하세요.

COleDataSource::CacheGlobalData

이 함수를 호출하여 데이터 전송 작업 중에 데이터가 제공되는 형식을 지정합니다.

void CacheGlobalData(
    CLIPFORMAT cfFormat,
    HGLOBAL hGlobal,
    LPFORMATETC lpFormatEtc = NULL);

매개 변수

cfFormat
데이터를 제공하는 클립보드 형식입니다. 이 매개 변수는 미리 정의된 클립보드 형식 또는 네이티브 Windows RegisterClipboardFormat 함수에서 반환된 값 중 하나일 수 있습니다 .

hGlobal
지정된 형식의 데이터를 포함하는 전역 메모리 블록에 대한 핸들입니다.

lpFormatEtc
데이터를 제공하는 형식을 설명하는 FORMATETC 구조를 가리킵니다. cfFormat에서 지정한 클립보드 형식 이외의 추가 형식 정보를 지정하려면 이 매개 변수에 대한 값을 제공합니다. NULL인 경우 구조체의 다른 필드에 기본값이 FORMATETC 사용됩니다.

설명

이 함수는 즉시 렌더링을 사용하여 데이터를 제공하므로 함수를 호출할 때 데이터를 제공해야 합니다. 데이터가 필요할 때까지 캐시됩니다. CacheData 많은 양의 데이터를 제공하거나 구조화된 스토리지 매체가 필요한 경우 멤버 함수를 사용합니다.

지연된 렌더링을 사용하려면 DelayRenderData 또는 DelayRenderFileData 멤버 함수를 호출합니다. MFC에서 처리하는 지연 렌더링에 대한 자세한 내용은 데이터 개체 및 데이터 원본: 조작 문서를 참조하세요.

자세한 내용은 Windows SDK의 FORMATETC 구조를 참조하세요.

자세한 내용은 Windows SDK의 RegisterClipboardFormat 을 참조하세요.

COleDataSource::COleDataSource

COleDataSource 개체를 생성합니다.

COleDataSource();

COleDataSource::D elayRenderData

이 함수를 호출하여 데이터 전송 작업 중에 데이터가 제공되는 형식을 지정합니다.

void DelayRenderData(
    CLIPFORMAT cfFormat,
    LPFORMATETC lpFormatEtc = NULL);

매개 변수

cfFormat
데이터를 제공하는 클립보드 형식입니다. 이 매개 변수는 미리 정의된 클립보드 형식 또는 네이티브 Windows RegisterClipboardFormat 함수에서 반환된 값 중 하나일 수 있습니다 .

lpFormatEtc
데이터를 제공하는 형식을 설명하는 FORMATETC 구조를 가리킵니다. cfFormat에서 지정한 클립보드 형식 이외의 추가 형식 정보를 지정하려면 이 매개 변수에 대한 값을 제공합니다. NULL인 경우 구조체의 다른 필드에 기본값이 FORMATETC 사용됩니다.

설명

이 함수는 지연된 렌더링을 사용하여 데이터를 제공하므로 데이터가 즉시 제공되지 않습니다. OnRenderData 또는 OnRenderGlobalData 멤버 함수는 데이터를 요청하기 위해 호출됩니다.

개체를 통해 데이터를 제공하지 않을 경우 이 함수를 CFile 사용합니다. 개체를 통해 CFile 데이터를 제공하려는 경우 DelayRenderFileData 멤버 함수를 호출합니다. MFC에서 처리하는 지연 렌더링에 대한 자세한 내용은 데이터 개체 및 데이터 원본: 조작 문서를 참조하세요.

즉시 렌더링을 사용하려면 CacheData 또는 CacheGlobalData 멤버 함수를 호출합니다.

자세한 내용은 Windows SDK의 FORMATETC 구조를 참조하세요.

자세한 내용은 Windows SDK의 RegisterClipboardFormat 을 참조하세요.

COleDataSource::D elayRenderFileData

이 함수를 호출하여 데이터 전송 작업 중에 데이터가 제공되는 형식을 지정합니다.

void DelayRenderFileData(
    CLIPFORMAT cfFormat,
    LPFORMATETC lpFormatEtc = NULL);

매개 변수

cfFormat
데이터를 제공하는 클립보드 형식입니다. 이 매개 변수는 미리 정의된 클립보드 형식 또는 네이티브 Windows RegisterClipboardFormat 함수에서 반환된 값 중 하나일 수 있습니다 .

lpFormatEtc
데이터를 제공하는 형식을 설명하는 FORMATETC 구조를 가리킵니다. cfFormat에서 지정한 클립보드 형식 이외의 추가 형식 정보를 지정하려면 이 매개 변수에 대한 값을 제공합니다. NULL인 경우 구조체의 다른 필드에 기본값이 FORMATETC 사용됩니다.

설명

이 함수는 지연된 렌더링을 사용하여 데이터를 제공하므로 데이터가 즉시 제공되지 않습니다. OnRenderFileData 멤버 함수는 데이터를 요청하기 위해 호출됩니다.

개체를 사용하여 데이터를 제공하려는 경우 이 함수를 사용합니다 CFile . 개체를 사용하지 CFile 않을 경우 DelayRenderData 멤버 함수를 호출합니다. MFC에서 처리하는 지연 렌더링에 대한 자세한 내용은 데이터 개체 및 데이터 원본: 조작 문서를 참조하세요.

즉시 렌더링을 사용하려면 CacheData 또는 CacheGlobalData 멤버 함수를 호출합니다.

자세한 내용은 Windows SDK의 FORMATETC 구조를 참조하세요.

자세한 내용은 Windows SDK의 RegisterClipboardFormat 을 참조하세요.

COleDataSource::D elaySetData

데이터 원본의 내용 변경을 지원하려면 이 함수를 호출합니다.

void DelaySetData(
    CLIPFORMAT cfFormat,
    LPFORMATETC lpFormatEtc = NULL);

매개 변수

cfFormat
데이터를 배치할 클립보드 형식입니다. 이 매개 변수는 미리 정의된 클립보드 형식 또는 네이티브 Windows RegisterClipboardFormat 함수에서 반환된 값 중 하나일 수 있습니다 .

lpFormatEtc
데이터를 바꿀 형식을 설명하는 FORMATETC 구조를 가리킵니다. cfFormat에서 지정한 클립보드 형식 이외의 추가 형식 정보를 지정하려면 이 매개 변수에 대한 값을 제공합니다. NULL인 경우 구조체의 다른 필드에 기본값이 FORMATETC 사용됩니다.

설명

이 경우 프레임워크에서 OnSetData 를 호출합니다. 프레임워크가 COleServerItem::GetDataSource에서 데이터 원본을 반환하는 경우에만 사용됩니다. 호출되지 않으면 DelaySetData 함수가 OnSetData 호출되지 않습니다. DelaySetData 은 지원하는 각 클립보드 또는 FORMATETC 형식에 대해 호출되어야 합니다.

자세한 내용은 Windows SDK의 FORMATETC 구조를 참조하세요.

자세한 내용은 Windows SDK의 RegisterClipboardFormat 을 참조하세요.

COleDataSource::D oDragDrop

멤버 함수를 DoDragDrop 호출하여 일반적으로 CWnd::OnLButtonDown 처리기에서 이 데이터 원본에 대한 끌어서 놓기 작업을 수행합니다.

DROPEFFECT DoDragDrop(
    DWORD dwEffects = DROPEFFECT_COPY|DROPEFFECT_MOVE|DROPEFFECT_LINK,
    LPCRECT lpRectStartDrag = NULL,
    COleDropSource* pDropSource = NULL);

매개 변수

dwEffects
이 데이터 원본에서 허용되는 끌어서 놓기 작업입니다. 다음 중 하나 이상이 될 수 있습니다.

  • DROPEFFECT_COPY 복사 작업을 수행할 수 있습니다.

  • DROPEFFECT_MOVE 이동 작업을 수행할 수 있습니다.

  • DROPEFFECT_LINK 삭제된 데이터에서 원래 데이터로의 링크를 설정할 수 있습니다.

  • DROPEFFECT_SCROLL 끌어서 스크롤 작업이 발생할 수 있음을 나타냅니다.

lpRectStartDrag
끌기가 실제로 시작되는 위치를 정의하는 사각형에 대한 포인터입니다. 자세한 내용은 아래 설명 부분을 참조하십시오.

pDropSource
놓기 원본을 가리킵니다. NULL이면 COleDropSource기본 구현이 사용됩니다.

Return Value

끌어서 놓기 작업으로 생성된 삭제 효과입니다. 그렇지 않으면 사용자가 제공된 사각형을 떠나기 전에 마우스 단추를 놓았기 때문에 작업이 시작되지 않으면 DROPEFFECT_NONE.

설명

끌어서 놓기 작업은 즉시 시작되지 않습니다. 마우스 커서가 lpRectStartDrag지정된 사각형을 벗어나거나 지정된 시간(밀리초)이 지나갈 때까지 기다립니다. lpRectStartDrag가 NULL이면 사각형의 크기는 1픽셀입니다.

지연 시간은 레지스트리 키 설정에 의해 지정됩니다. CWinApp::WriteProfileString 또는 CWinApp::WriteProfileInt를 호출하여 지연 시간을 변경할 수 있습니다. 지연 시간을 지정하지 않으면 기본값인 200밀리초가 사용됩니다. 끌기 지연 시간은 다음과 같이 저장됩니다.

  • Windows NT 끌기 지연 시간은 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\NT\CurrentVersion\IniFileMapping\win.ini\Windows\DragDelay에 저장됩니다.

  • Windows 3.x 끌기 지연 시간은 WIN에 저장됩니다. [Windows} 섹션 아래의 INI 파일입니다.

  • Windows 95/98 끌기 지연 시간은 캐시된 버전의 WIN에 저장됩니다. INI.

끌기 지연 정보가 레지스트리 또는 에 저장되는 방법에 대한 자세한 내용은 . INI 파일은 Windows SDK의 WriteProfileString을 참조하세요.

자세한 내용은 OLE 끌어서 놓기 문서를 참조하세요.

COleDataSource::Empty

데이터 개체를 비우려면 이 함수를 COleDataSource 호출합니다.

void Empty();

설명

캐시된 렌더링 형식과 지연 렌더링 형식은 모두 비워지므로 다시 사용할 수 있습니다.

자세한 내용은 Windows SDK의 ReleaseStgMedium 을 참조하세요.

COleDataSource::FlushClipboard

클립보드에 있는 데이터를 렌더링한 다음 애플리케이션이 종료된 후 클립보드에서 데이터를 붙여넣을 수 있습니다.

static void PASCAL FlushClipboard();

설명

SetClipboard를 사용하여 클립보드에 데이터를 배치합니다.

COleDataSource::GetClipboardOwner

SetClipboard가 마지막으로 호출된 이후 클립보드 의 데이터가 변경되었는지 여부를 확인하고, 이 경우 현재 소유자를 식별합니다.

static COleDataSource* PASCAL GetClipboardOwner();

Return Value

현재 클립보드에 있는 데이터 원본이거나, 클립보드에 아무 것도 없거나 호출하는 애플리케이션이 클립보드를 소유하지 않은 경우 NULL입니다.

COleDataSource::OnRenderData

지정된 형식으로 데이터를 검색하기 위해 프레임워크에서 호출됩니다.

virtual BOOL OnRenderData(
    LPFORMATETC lpFormatEtc,
    LPSTGMEDIUM lpStgMedium);

매개 변수

lpFormatEtc
정보가 요청되는 형식을 지정하는 FORMATETC 구조를 가리킵니다.

lpStgMedium
데이터를 반환할 STGMEDIUM 구조를 가리킵니다.

Return Value

성공하면 0이 아니고, 그렇지 않으면 0입니다.

설명

지정된 형식은 지연된 렌더링을 COleDataSource 위해 DelayRenderData 또는 DelayRenderFileData 멤버 함수를 사용하여 개체에 이전에 배치된 형식입니다. 제공된 스토리지 매체가 각각 파일 또는 메모리인 경우 이 함수의 기본 구현은 OnRenderFileData 또는 OnRenderGlobalData를 호출합니다. 이러한 형식 중 어느 것도 제공되지 않으면 기본 구현은 0을 반환하고 아무 작업도 수행하지 않습니다. MFC에서 처리하는 지연 렌더링에 대한 자세한 내용은 데이터 개체 및 데이터 원본: 조작 문서를 참조하세요.

lpStgMedium-tymed>가 TYMED_NULL STGMEDIUM 경우 lpFormatEtc-tymed>에서 지정한 대로 할당하고 채워야 합니다. TYMED_NULL STGMEDIUM 않으면 데이터로 채워야 합니다.

이는 고급 재정의 가능입니다. 요청된 형식 및 중간 형식으로 데이터를 제공하려면 이 함수를 재정의합니다. 데이터에 따라 이 함수의 다른 버전 중 하나를 대신 재정의할 수 있습니다. 데이터가 작고 크기가 고정된 경우 재정 OnRenderGlobalData의합니다. 데이터가 파일에 있거나 가변 크기인 경우 재정 OnRenderFileData의합니다.

자세한 내용은 Windows SDK의 STGMEDIUMFORMATETC 구조, TYMED 열거형 형식 및 IDataObject::GetData를 참조하세요.

COleDataSource::OnRenderFileData

지정된 스토리지 매체가 파일인 경우 지정된 형식으로 데이터를 검색하기 위해 프레임워크에서 호출됩니다.

virtual BOOL OnRenderFileData(
    LPFORMATETC lpFormatEtc,
    CFile* pFile);

매개 변수

lpFormatEtc
정보가 요청되는 형식을 지정하는 FORMATETC 구조를 가리킵니다.

pFile
데이터를 렌더링할 CFile 개체를 가리킵니다.

Return Value

성공하면 0이 아니고, 그렇지 않으면 0입니다.

설명

지정된 형식은 지연된 렌더링에 COleDataSource DelayRenderData 멤버 함수를 사용하여 개체에 이전에 배치된 형식입니다. 이 함수의 기본 구현은 단순히 FALSE를 반환합니다.

이는 고급 재정의 가능입니다. 요청된 형식 및 중간 형식으로 데이터를 제공하려면 이 함수를 재정의합니다. 데이터에 따라 이 함수의 다른 버전 중 하나를 대신 재정의할 수 있습니다. 여러 스토리지 미디어를 처리하려면 OnRenderData를 재정의합니다. 데이터가 파일에 있거나 가변 크기인 경우 재정 OnRenderFileData의합니다. MFC에서 처리하는 지연 렌더링에 대한 자세한 내용은 데이터 개체 및 데이터 원본: 조작 문서를 참조하세요.

자세한 내용은 Windows SDK의 FORMATETC 구조체 및 IDataObject::GetData 를 참조하세요.

COleDataSource::OnRenderGlobalData

지정된 스토리지 매체가 전역 메모리일 때 지정된 형식으로 데이터를 검색하기 위해 프레임워크에서 호출됩니다.

virtual BOOL OnRenderGlobalData(
    LPFORMATETC lpFormatEtc,
    HGLOBAL* phGlobal);

매개 변수

lpFormatEtc
정보가 요청되는 형식을 지정하는 FORMATETC 구조를 가리킵니다.

phGlobal
데이터를 반환할 전역 메모리에 대한 핸들을 가리킵니다. 아직 할당되지 않은 경우 이 매개 변수는 NULL일 수 있습니다.

Return Value

성공하면 0이 아니고, 그렇지 않으면 0입니다.

설명

지정된 형식은 지연된 렌더링에 COleDataSource DelayRenderData 멤버 함수를 사용하여 개체에 이전에 배치된 형식입니다. 이 함수의 기본 구현은 단순히 FALSE를 반환합니다.

phGlobal이 NULL이면 새 HGLOBAL을 할당하고 phGlobal에서 반환해야 합니다. 그렇지 않으면 phGlobal에서 지정한 HGLOBAL 을 데이터로 채워야 합니다. HGLOBAL에 배치된 데이터의 양은 메모리 블록의 현재 크기를 초과해서는 안 합니다. 또한 블록을 더 큰 크기로 다시 할당할 수 없습니다.

이는 고급 재정의 가능입니다. 요청된 형식 및 중간 형식으로 데이터를 제공하려면 이 함수를 재정의합니다. 데이터에 따라 이 함수의 다른 버전 중 하나를 대신 재정의할 수 있습니다. 여러 스토리지 미디어를 처리하려면 OnRenderData를 재정의합니다. 데이터가 파일에 있거나 크기가 가변적인 경우 OnRenderFileData를 재정의합니다. MFC에서 처리하는 지연 렌더링에 대한 자세한 내용은 데이터 개체 및 데이터 원본: 조작 문서를 참조하세요.

자세한 내용은 Windows SDK의 FORMATETC 구조체 및 IDataObject::GetData 를 참조하세요.

COleDataSource::OnSetData

지정된 형식으로 개체의 데이터를 COleDataSource 설정하거나 바꾸기 위해 프레임워크에서 호출됩니다.

virtual BOOL OnSetData(
    LPFORMATETC lpFormatEtc,
    LPSTGMEDIUM lpStgMedium,
    BOOL bRelease);

매개 변수

lpFormatEtc
데이터를 바꿀 형식을 지정하는 FORMATETC 구조를 가리킵니다.

lpStgMedium
개체의 현재 내용을 대체할 데이터를 포함하는 STGMEDIUM 구조를 가리킵니다 COleDataSource .

bRelease
함수 호출을 완료한 후 스토리지 매체의 소유권이 있는 사용자를 나타냅니다. 호출자는 스토리지 매체를 대신하여 할당된 리소스를 해제할 책임이 있는 사람을 결정합니다. 호출자는 bRelease를 설정 하여 이 작업을 수행합니다. bRelease가 0이 아닌 경우 데이터 원본은 소유권을 가져와서 사용이 완료되면 매체를 해제합니다. bRelease가 0이면 호출자는 소유권을 유지하고 데이터 원본은 호출 기간 동안에만 스토리지 매체를 사용할 수 있습니다.

Return Value

성공하면 0이 아니고, 그렇지 않으면 0입니다.

설명

데이터 원본은 데이터를 성공적으로 가져올 때까지 데이터의 소유권을 가져오지 않습니다. 즉, 0을 반환하는 경우 OnSetData 소유권을 사용하지 않습니다. 데이터 원본이 소유권을 가져오는 경우 ReleaseStgMedium 함수를 호출하여 스토리지 매체를 해제합니다.

기본 구현은 아무 작업도 수행하지 않습니다. 지정된 형식의 데이터를 바꾸려면 이 함수를 재정의합니다. 이는 고급 재정의 가능입니다.

자세한 내용은 Windows SDK의 STGMEDIUMFORMATETC 구조와 ReleaseStgMediumIDataObject::GetData 함수를 참조하세요.

COleDataSource::SetClipboard

CacheData, CacheGlobalData, DelayRenderData 또는 DelayRenderFileData 함수 중 하나를 호출한 후 개체에 포함된 COleDataSource 데이터를 클립보드에 넣습니다.

void SetClipboard();

참고 항목

MFC 샘플 HIERSVR
MFC 샘플 OCLIENT
CCmdTarget 클래스
계층 구조 차트
COleDataObject 클래스