OleCreateFromData 함수(ole2.h)
클립보드 또는 OLE 끌어서 놓기 작업의 일부로 검색된 데이터 전송 개체에서 포함된 개체를 만듭니다. OLE 끌어서 놓기 작업에서 붙여넣기를 구현하는 데 사용됩니다.
구문
HRESULT OleCreateFromData(
[in] LPDATAOBJECT pSrcDataObj,
[in] REFIID riid,
[in] DWORD renderopt,
[in] LPFORMATETC pFormatEtc,
[in] LPOLECLIENTSITE pClientSite,
[in] LPSTORAGE pStg,
[out] LPVOID *ppvObj
);
매개 변수
[in] pSrcDataObj
개체가 만들어진 데이터를 보유하는 데이터 전송 개체의 IDataObject 인터페이스에 대한 포인터입니다.
[in] riid
호출자가 나중에 새 개체와 통신하는 데 사용하는 인터페이스의 식별자에 대한 참조입니다(일반적으로 IOleObject의 인터페이스 식별자로 OLE 헤더에 정의된 IID_IOleObject).
[in] renderopt
새로 만든 개체에 로컬로 캐시된 드로잉 또는 데이터 검색 기능을 나타내는 열거형 OLERENDER 의 값입니다. 추가 고려 사항은 다음 설명 섹션에 설명되어 있습니다.
[in] pFormatEtc
새로 만든 개체에 로컬로 캐시된 그리기 또는 데이터 검색 기능을 나타내는 열거형 OLERENDER 의 값에 대한 포인터입니다. 선택한 OLERENDER 값은 pFormatEtc 매개 변수의 가능한 값에 영향을 줍니다.
[in] pClientSite
개체가 컨테이너에서 서비스를 요청하는 기본 인터페이스인 IOleClientSite의 instance 대한 포인터입니다. 이 매개 변수는 NULL일 수 있습니다.
[in] pStg
스토리지 개체의 IStorage 인터페이스에 대한 포인터입니다. 이 매개 변수는 NULL이 아닐 수 있습니다.
[out] ppvObj
riid에서 요청된 인터페이스 포인터를 수신하는 포인터 변수의 주소입니다. 반환에 성공하면 *ppvObj 는 새로 만든 개체에 대해 요청된 인터페이스 포인터를 포함합니다.
반환 값
이 함수는 성공에 대한 S_OK 반환합니다. 다른 가능한 값은 다음과 같습니다.
반환 코드 | 설명 |
---|---|
|
OLE가 정적 개체만 만들 수 있음을 나타냅니다. |
|
개체를 만드는 데 사용할 수 있는 형식은 없습니다. |
설명
OleCreateFromData 함수는 IDataObject 인터페이스를 지원하는 데이터 전송 개체에서 포함된 개체를 만듭니다. 이 경우 데이터 개체는 OleGetClipboard 함수를 호출하여 클립보드에서 검색된 형식이거나 OLE 끌어서 놓기 작업의 일부입니다(데이터 개체는 IDropTarget::D rop 호출에 전달됨).
FileName 또는 FileNameW 클립보드 형식(CF_FILENAME)이 데이터 전송 개체에 있고 CF_EMBEDDEDOBJECT 또는 CF_EMBEDSOURCE 없는 경우 OleCreateFromData 는 먼저 표시된 파일이 포함된 패키지를 만들려고 시도합니다. 일반적으로 사용 가능한 첫 번째 형식을 사용합니다.
OleCreateFromData에서 패키지를 만들 수 없는 경우 CF_EMBEDDEDOBJECT 형식을 사용하여 개체를 만들려고 합니다. 해당 형식을 사용할 수 없는 경우 OleCreateFromData 는 CF_EMBEDSOURCE 형식으로 만듭니다. 이러한 형식 중 어느 것도 사용할 수 없으며 데이터 전송 개체가 IPersistStorage 인터페이스를 지원하는 경우 OleCreateFromData 는 개체의 IPersistStorage::Save 를 호출하여 개체 자체를 저장합니다.
기존 연결된 개체를 선택한 다음 복사하면 클립보드에 다른 포함 개체로 표시됩니다. 따라서 OleCreateFromData 를 호출하는 붙여넣기 작업은 연결된 개체를 만들 수 있습니다. 붙여넣기 작업 후에 컨테이너는 QueryInterface 함수를 호출하여 연결된 개체가 만들어졌는지 확인하기 위해 IID_IOleLink(OLE 헤더에 IOleLink의 인터페이스 식별자로 정의됨)를 요청해야 합니다.
renderopt 및 pFormatetc 매개 변수를 사용하여 새로 만든 개체의 캐싱 기능을 제어합니다. 이러한 매개 변수의 상호 작용을 사용하여 캐시할 내용을 확인하는 방법에 대한 일반적인 내용은 OLERENDER 열거형을 참조하세요. 그러나 OleCreateFromData 가 캐시를 초기화하는 방식에는 이러한 매개 변수의 몇 가지 추가적인 특정 효과가 있습니다.
OleCreateFromData가 CF_EMBEDDEDOBJECT 또는 CF_EMBEDSOURCE 클립보드 형식을 사용하여 포함된 개체를 만드는 경우 두 개체 간의 기본 차이점은 캐시 초기화 데이터가 저장되는 위치입니다.
- CF_EMBEDDEDOBJECT 원본이 기존 포함된 개체임을 나타냅니다. 이미 캐시에 적절한 데이터가 있으며 OLE는 이 데이터를 사용하여 새 개체의 캐시를 초기화합니다.
- CF_EMBEDSOURCE 원본 데이터 개체에 캐시 초기화 정보가 CF_EMBEDSOURCE 이외의 형식으로 포함되어 있음을 나타냅니다. OleCreateFromData 는 이를 사용하여 새로 포함된 개체의 캐시를 초기화합니다.
값 | Description |
---|---|
OLERENDER_DRAW & OLERENDER_FORMAT | 캐시할 프레젠테이션 정보가 현재 적절한 캐시 초기화 풀에 있는 경우 이 정보가 사용됩니다. (적절한 위치는 CF_EMBEDDEDOBJECT 원본 데이터 개체 캐시에 있고 CF_EMBEDSOURCE 원본 데이터 개체의 다른 형식에 있습니다.) 정보가 없으면 캐시는 처음에 비어 있지만 개체가 처음 실행될 때 채워집니다. 새로 만든 개체에는 다른 형식이 캐시되지 않습니다. |
OLERENDER_NONE | 새로 만든 개체에 캐시할 항목이 없습니다. 원본에 CF_EMBEDDEDOBJECT 형식이 있는 경우 복사된 기존 캐시된 데이터가 제거됩니다. |
OLERENDER_ASIS | 원본에 CF_EMBEDDEDOBJECT 형식이 있는 경우 새 개체의 캐시는 원본 개체와 동일한 캐시 데이터를 포함하는 것입니다. CF_EMBEDSOURCE 경우 새로 만든 개체에 캐시할 항목이 없습니다. 이 옵션은 보다 정교한 컨테이너에서 사용해야 합니다. 이 호출 후 이러한 컨테이너는 IOleCache::Cache 및 IOleCache::Uncache 를 호출하여 캐시할 항목을 정확히 설정합니다. CF_EMBEDSOURCE 경우 IOleCache::InitCache도 호출합니다. |
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000 Professional[데스크톱 앱만] |
지원되는 최소 서버 | Windows 2000 Server[데스크톱 앱만] |
대상 플랫폼 | Windows |
헤더 | ole2.h |
라이브러리 | Ole32.lib |
DLL | Ole32.dll |
API 세트 | ext-ms-win-com-ole32-l1-1-3(Windows 10 버전 10.0.10240에 도입됨) |