셸 클립보드 형식

셸 클립보드 형식은 클립보드를 통해 전송되는 Shell 데이터의 형식을 식별하는 데 사용됩니다. 대부분의 Shell 클립보드 형식은 파일 이름 목록 또는 PIDL(항목 식별자 목록)에 대한 포인터와 같은 데이터 형식을 식별합니다. 그러나 일부 형식은 원본과 대상 간의 통신에 사용됩니다. 최적화된 이동delete_on_paste 같은 셸 작업을 지원하여 데이터 전송 프로세스를 신속하게 처리할 수 있습니다. 셸 데이터는 데이터를 특성화하기 위한 보다 일반적인 방법으로 FORMATETC 구조를 사용하는 데이터 개체에 항상 포함됩니다. 구조체의 cfFormat 멤버는 데이터의 특정 항목에 대한 클립보드 형식으로 설정됩니다. 다른 멤버는 데이터 전송 메커니즘과 같은 추가 정보를 제공합니다. 데이터는 함께 제공되는 STGMEDIUM 구조에 포함됩니다.

참고

표준 클립보드 형식 식별자에는 CF_XXX 형식이 있습니다. 일반적인 예는 ANSI 텍스트 데이터를 전송하는 데 사용되는 CF_TEXT. 이러한 식별자는 미리 정의된 값을 가지며 FORMATETC 구조와 함께 직접 사용할 수 있습니다. CF_HDROP 제외하고 Shell 형식 식별자는 미리 정의되지 않습니다. DragWindow를 제외하고 형식은 CFSTR_XXX입니다. 이러한 값을 미리 정의된 형식과 구분하기 위해 단순히 형식이라고도 합니다. 그러나 미리 정의된 형식과 달리 데이터를 전송하는 데 사용하려면 먼저 원본과 대상 모두에서 등록해야 합니다. 셸 형식을 등록하려면 Shlobj.h 헤더 파일을 포함하고 CFSTR_XXX 형식 식별자를 RegisterClipboardFormat에 전달합니다. 이 함수는 유효한 클립보드 형식 값을 반환하며 FORMATETC 구조체의 cfFormat 멤버로 사용할 수 있습니다.

 

셸 클립보드 형식은 사용 방법에 따라 세 그룹으로 구성됩니다.

파일 시스템 개체 전송 형식

이러한 형식은 하나 이상의 파일 또는 다른 Shell 개체를 전송하는 데 사용됩니다.

CF_HDROP

이 클립보드 형식은 기존 파일 그룹의 위치를 전송할 때 사용됩니다. 다른 셸 형식과 달리 미리 정의되므로 RegisterClipboardFormat을 호출할 필요가 없습니다. 데이터는 전역 메모리 개체를 포함하는 STGMEDIUM 구조체로 구성됩니다. 구조체의 hGlobal 멤버는 DROPFILES 구조를 hGlobal 멤버로 가리킵니다.

DROPFILES 구조체의 pFiles 멤버는 파일 이름을 포함하는 이중 null로 끝나는 문자 배열에 대한 오프셋을 포함합니다. 데이터 개체에서 CF_HDROP 형식을 추출하는 경우 DragQueryFile 을 사용하여 전역 메모리 개체에서 개별 파일 이름을 추출할 수 있습니다. 데이터 개체에 배치할 CF_HDROP 형식을 만드는 경우 파일 이름 배열을 구성해야 합니다.

파일 이름 배열은 일련의 문자열로 구성되며, 각 문자열에는 종결 NULL 문자를 포함하여 하나의 파일의 정규화된 경로가 포함됩니다. 배열을 종료하기 위해 최종 문자열에 추가 null 문자가 추가됩니다. 예를 들어 파일 c:\temp1.txt 및 c:\temp2.txt 전송되는 경우 문자 배열은 다음과 같습니다.

c:\temp1.txt'\0'c:\temp2.txt'\0''\0'

참고

이 예제에서 '\0'은 포함해야 하는 리터럴 문자가 아닌 null 문자를 나타내는 데 사용됩니다.

개체가 끌어서 놓기 작업의 일부로 클립보드에 복사된 경우 DROPFILES 구조체의 pt 멤버에는 개체가 삭제된 지점의 좌표가 포함됩니다. DragQueryPoint를 사용하여 커서 좌표를 추출할 수 있습니다.

이 형식이 데이터 개체에 있는 경우 OLE 끌어서 놓기 루프는 OLE가 아닌 드롭 대상이 있는 WM_DROPFILES 기능을 시뮬레이션합니다. 이는 애플리케이션이 Windows 3.1 시스템에서 끌어서 놓기 작업의 원본인 경우에 중요합니다.

CFSTR_FILECONTENTS

이 형식 식별자는 CFSTR_FILEDESCRIPTOR 형식과 함께 사용하여 실제로 저장되는 방법에 관계없이 파일을 전송하는 것처럼 데이터를 전송합니다. 데이터는 한 파일의 내용을 나타내는 STGMEDIUM 구조체로 구성됩니다. 파일은 일반적으로 스트림 개체로 표시되므로 파일의 내용을 메모리에 배치할 필요가 없도록 합니다. 이 경우 STGMEDIUM 구조체의 tymed 멤버는 TYMED_ISTREAM 로 설정되고 파일은 IStream 인터페이스로 표시됩니다. 파일은 스토리지 또는 전역 메모리 개체(TYMED_ISTORAGE 또는 TYMED_HGLOBAL)일 수도 있습니다. 연결된 CFSTR_FILEDESCRIPTOR 형식에는 파일의 이름과 특성을 지정하는 각 파일에 대한 FILEDESCRIPTOR 구조가 포함되어 있습니다.

대상은 CFSTR_FILECONTENTS 형식과 연결된 데이터를 마치 파일인 것처럼 처리합니다. 대상은 IDataObject::GetData를 호출하여 데이터를 추출할 때 FORMATETC 구조체의 lindex 멤버를 파일의 FILEDESCRIPTOR 구조체에 포함된 CFSTR_FILEDESCRIPTOR 형식의 0부터 시작하는 인덱스로 설정하여 특정 파일을 지정합니다. 그런 다음, 대상은 반환된 인터페이스 포인터 또는 전역 메모리 핸들을 사용하여 데이터를 추출합니다.

CFSTR_FILEDESCRIPTOR

이 형식 식별자는 CFSTR_FILECONTENTS 형식과 함께 사용하여 데이터를 파일 그룹으로 전송합니다. 이러한 두 형식은 파일 시스템 파일로 저장되지 않은 Shell 개체를 전송하는 기본 방법입니다. 예를 들어 각 전자 메일이 실제로 데이터베이스의 데이터 블록으로 저장되더라도 이러한 형식을 사용하여 전자 메일 메시지 그룹을 개별 파일로 전송할 수 있습니다. 데이터는 전역 메모리 개체를 포함하는 STGMEDIUM 구조체로 구성됩니다. 구조체의 hGlobal 멤버는 FILEGROUPDESCRIPTOR 구조체를 가리킨 다음 그룹의 각 파일에 대해 하나의 FILEDESCRIPTOR 구조체를 포함하는 배열을 가리킵니다. 각 FILEDESCRIPTOR 구조에 대해 파일의 내용을 포함하는 별도의 CFSTR_FILECONTENTS 형식이 있습니다. 특정 파일의 CFSTR_FILECONTENTS 형식을 식별하려면 FORMATETC 구조체의 lIndex 값을 파일 FILEDESCRIPTOR 구조체의 0부터 시작하는 인덱스로 설정합니다.

CFSTR_FILEDESCRIPTOR 형식은 실제로 저장되는 방법에 관계없이 파일 그룹인 것처럼 데이터를 전송하는 데 일반적으로 사용됩니다. 대상의 관점에서 각 CFSTR_FILECONTENTS 형식은 단일 파일을 나타내며 그에 따라 처리됩니다. 그러나 원본은 선택한 방식으로 데이터를 저장할 수 있습니다. CSFTR_FILECONTENTS 형식은 단일 파일에 해당할 수 있지만, 예를 들어 데이터베이스 또는 텍스트 문서에서 원본에서 추출한 데이터를 나타낼 수도 있습니다.

CFSTR_FILENAME

이 형식 식별자는 단일 파일을 전송하는 데 사용됩니다. 데이터는 전역 메모리 개체를 포함하는 STGMEDIUM 구조체로 구성됩니다. 구조체의 hGlobal 멤버는 파일의 정규화된 파일 경로를 포함하는 단일 null로 끝나는 문자열을 가리킵니다. 이 형식은 CF_HDROP 대체되었지만 Windows 3.1 애플리케이션과의 이전 버전과의 호환성을 위해 지원됩니다.

CFSTR_FILENAMEMAP

이 형식 식별자는 CF_HDROP 형식의 파일 그룹 이름을 변경하고 전송할 때 사용됩니다. 데이터는 전역 메모리 개체를 포함하는 STGMEDIUM 구조체로 구성됩니다. 구조체의 hGlobal 멤버는 이중 null로 끝나는 문자 배열을 가리킵니다. 이 배열에는 파일이 함께 제공되는 CF_HDROP 형식으로 나열되는 순서와 동일한 순서로 각 파일에 대한 새 이름이 포함됩니다. 문자 배열의 형식은 CF_HDROP 전송된 파일을 나열하는 데 사용하는 형식과 동일합니다.

CFSTR_MOUNTEDVOLUME

이 형식 식별자는 탑재된 볼륨의 경로를 전송하는 데 사용됩니다. CF_HDROP 비슷하지만 단일 경로만 포함하며 볼륨이 폴더에 탑재될 때 경로를 나타내는 데 필요할 수 있는 긴 경로 문자열을 처리할 수 있습니다. 데이터는 전역 메모리 개체를 포함하는 STGMEDIUM 구조체로 구성됩니다. 구조체의 hGlobal 멤버는 정규화된 파일 경로를 포함하는 단일 null로 끝나는 문자열을 가리킵니다. 경로 문자열은 '\' 문자와 종료 NULL로 끝나야 합니다.

Windows 2000 이전에는 드라이브 문자에만 볼륨을 탑재할 수 있었습니다. NTFS 포맷 드라이브를 사용하는 Windows 2000 이상 시스템의 경우 빈 폴더에 볼륨을 탑재할 수도 있습니다. 이 기능을 사용하면 드라이브 문자를 사용하지 않고 볼륨을 탑재할 수 있습니다. 탑재된 볼륨은 FAT, FAT32, NTFS 및 CDFS를 포함하여 현재 지원되는 모든 형식을 사용할 수 있습니다.

속성 시트 처리기를 구현하여 드라이브 속성 속성 시트에 페이지를 추가할 수 있습니다. 볼륨이 드라이브 문자에 탑재된 경우 셸은 CF_HDROP 형식의 처리기에 경로 정보를 전달합니다. Windows 2000 이상 시스템에서는 이전 시스템과 마찬가지로 볼륨이 드라이브 문자에 탑재될 때 CF_HDROP 형식이 사용됩니다. 그러나 볼륨이 폴더에 탑재된 경우 CF_HDROP 대신 CFSTR_MOUNTEDVOLUME 형식 식별자가 사용됩니다.

드라이브 문자만 볼륨을 탑재하는 데 사용되는 경우 CF_HDROP 사용되며 기존 속성 시트 처리기는 이전 시스템과 마찬가지로 작동합니다. 그러나 처리기가 폴더에 탑재된 볼륨의 페이지와 드라이브 문자를 표시하려면 처리기가 CSFTR_MOUNTEDVOLUME 및 CF_HDROP 형식을 모두 이해할 수 있어야 합니다.

CFSTR_SHELLIDLIST

이 형식 식별자는 하나 이상의 기존 네임스페이스 개체의 위치를 전송할 때 사용됩니다. CF_HDROP 거의 동일한 방식으로 사용되지만 파일 시스템 경로 대신 PIDL이 포함되어 있습니다. PIDL을 사용하면 CFSTR_SHELLIDLIST 형식이 가상 개체와 파일 시스템 개체를 처리할 수 있습니다. 데이터는 전역 메모리 개체를 포함하는 STGMEDIUM 구조체입니다. 구조체의 hGlobal 멤버는 CIDA 구조를 가리킵니다.

CIDA 구조체의 aoffset 멤버는 전송되는 각 PIDL에 대한 ITEMIDLIST 구조의 시작 부분에 대한 오프셋을 포함하는 배열입니다. 특정 PIDL을 추출하려면 먼저 해당 인덱스가 결정됩니다. 그런 다음 해당 인덱스에 해당하는 aoffset 값을 CIDA 구조체의 주소에 추가합니다.

aoffset의 첫 번째 요소는 부모 폴더의 정규화된 PIDL에 대한 오프셋을 포함합니다. 이 PIDL이 비어 있으면 부모 폴더는 바탕 화면입니다. 배열의 나머지 각 요소는 전송할 PIDL 중 하나에 대한 오프셋을 포함합니다. 이러한 모든 PIDL은 부모 폴더의 PIDL을 기준으로 합니다.

다음 두 매크로를 사용하여 CIDA 구조에서 PIDL을 검색할 수 있습니다. 첫 번째는 구조체에 대한 포인터를 가져와서 부모 폴더의 PIDL을 검색합니다. 두 번째는 구조체에 대한 포인터를 사용하고 0부터 시작하는 인덱스로 식별되는 다른 PIDL 중 하나를 검색합니다.

#define GetPIDLFolder(pida) (LPCITEMIDLIST)(((LPBYTE)pida)+(pida)->aoffset[0])

#define GetPIDLItem(pida, i) (LPCITEMIDLIST)(((LPBYTE)pida)+(pida)->aoffset[i+1])

참고

이러한 매크로에서 반환되는 값은 PIDL의 ITEMIDLIST 구조에 대한 포인터입니다. 이러한 구조체의 길이는 다양하므로 끝을 표시하는 2 바이트 NULL에 도달할 때까지 ITEMIDLIST 구조체의 SHITEMID 구조체 각각을 탐색하여 구조체의 끝을 결정해야 합니다.

CFSTR_SHELLIDLISTOFFSET

이 형식 식별자는 CF_HDROP, CFSTR_SHELLIDLISTCFSTR_FILECONTENTS 같은 형식과 함께 사용하여 전송 후 개체 그룹의 위치를 지정합니다. 데이터는 전역 메모리 개체를 포함하는 STGMEDIUM 구조체로 구성됩니다. 구조체의 hGlobal 멤버는 POINT 구조체의 배열을 가리킵니다. 첫 번째 구조체는 그룹을 둘러싸는 사각형의 왼쪽 위 모서리에 있는 화면 좌표(픽셀)를 지정합니다. 나머지 구조체는 그룹의 위치를 기준으로 개별 개체의 위치를 지정합니다. 개체를 연결된 형식으로 나열하는 데 사용한 순서와 동일해야 합니다.

가상 개체 전송 형식

CFSTR_SHELLIDLIST 형식을 사용하여 파일 시스템과 가상 개체를 모두 전송할 수 있습니다. 그러나 특정 유형의 가상 개체를 전송하기 위한 몇 가지 특수 형식도 있습니다.

CFSTR_NETRESOURCES

이 형식 식별자는 도메인 또는 서버와 같은 네트워크 리소스를 전송할 때 사용됩니다. 데이터는 전역 메모리 개체를 포함하는 STGMEDIUM 구조체입니다. 구조체의 hGlobal 멤버는 NRESARRAY 구조를 가리킵니다. 해당 구조체의 nr 멤버는 lpRemoteName 멤버에 네트워크 리소스를 식별하는 null로 끝나는 문자열이 포함된 NETRESOURCE 구조를 나타냅니다. 그런 다음 삭제 대상은 WNetAddConnection과 같은 WNet(Windows 네트워킹) API 함수와 함께 데이터를 사용하여 개체에 대한 네트워크 작업을 수행할 수 있습니다.

CFSTR_PRINTERGROUP

이 형식 식별자는 프린터의 친숙한 이름을 전송할 때 사용됩니다. 데이터는 전역 메모리 개체를 포함하는 STGMEDIUM 구조체입니다. 구조체의 hGlobal 멤버는 CF_HDROP 사용된 것과 동일한 형식의 문자열을 가리킵니다. 그러나 DROPFILES 구조체의 pFiles 멤버에는 파일 경로 대신 하나 이상의 친숙한 프린터 이름이 포함됩니다.

CFSTR_INETURL

이 형식 식별자는 CFSTR_SHELLURL 대체합니다(사용되지 않음). 애플리케이션이 클립보드 URL을 조작하도록 하려면 CFSTR_SHELLURL(사용되지 않음) 대신 CFSTR_INETURL 사용합니다. 이 형식은 단일 URL의 최상의 클립보드 표현을 제공합니다. UNICODE가 정의되지 않은 경우 애플리케이션은 URL의 CF_TEXT/CFSTR_SHELLURL 버전을 검색합니다. UNICODE가 정의된 경우 애플리케이션은 URL의 CF_UNICODE 버전을 검색합니다.

CFSTR_SHELLURL(사용되지 않음)

참고

이 형식 식별자는 더 이상 사용되지 않습니다. 대신 CFSTR_INETURL 사용합니다.

 

원본과 대상 간의 통신 형식

이러한 형식 식별자는 원본과 대상 간의 통신을 허용합니다. 형식은 데이터와 함께 제공되며, 셸 개체와 관련된 이동-복사-붙여넣기 또는 끌어서 놓기 작업에 대해 애플리케이션에 더 높은 수준의 제어를 제공합니다.

CFSTR_INDRAGLOOP

이 형식 식별자는 데이터 개체가 끌어서 놓기 루프에 있는지 여부를 나타내는 데 사용됩니다. 데이터는 전역 메모리 개체를 포함하는 STGMEDIUM 구조체입니다. 구조체의 hGlobal 멤버는 DWORD 값을 가리킵니다. DWORD 값이 0이 아니면 데이터 개체가 끌어서 놓기 루프 내에 있습니다. 값이 0으로 설정된 경우 데이터 개체는 끌어서 놓기 루프 내에 있지 않습니다.

일부 놓기 대상은 IDataObject::GetData 를 호출하고 개체가 끌어서 놓기 루프 내에 있는 동안 데이터 추출을 시도할 수 있습니다. 이러한 각 항목에 대해 개체를 완전히 렌더링하면 끌기 커서가 중단될 수 있습니다. 데이터 개체가 CFSTR_INDRAGLOOP 지원하는 경우 대상은 해당 형식을 사용하여 끌어서 놓기 루프의 상태 검사 실제로 삭제될 때까지 개체의 메모리 집약적 렌더링을 방지할 수 있습니다. 렌더링에 메모리를 많이 사용하는 형식은 FORMATETC 열거자 및 IDataObject::QueryGetData 호출에 포함되어야 합니다. 데이터 개체가 CFSTR_INDRAGLOOP 설정하지 않으면 값이 0으로 설정된 것처럼 작동해야 합니다.

CFSTR_LOGICALPERFORMEDDROPEFFECT

버전 5.0. 이 형식 식별자를 사용하면 드롭 소스가 데이터 개체의 IDataObject::GetData 메서드를 호출하여 셸 데이터 전송의 결과를 확인할 수 있습니다. 데이터는 전역 메모리 개체를 포함하는 STGMEDIUM 구조체입니다. 구조체의 hGlobal 멤버는 DROPEFFECT 값이 포함된 DWORD를 가리킵니다.

CFSTR_PERFORMEDDROPEFFECT 형식 식별자는 대상이 실제로 수행된 작업을 데이터 개체에 나타낼 수 있도록 하기 위한 것이었습니다. 그러나 셸은 가능하면 파일 시스템 개체에 최적화된 이동을 사용합니다. 이 경우 Shell은 일반적으로 원래 데이터가 삭제되었음을 데이터 개체에 나타내기 위해 CFSTR_PERFORMEDDROPEFFECT 값을 DROPEFFECT_NONE 설정합니다. 따라서 원본은 CFSTR_PERFORMEDDROPEFFECT 값을 사용하여 수행된 작업을 확인할 수 없습니다. 대부분의 원본에는 이 정보가 필요하지 않지만 몇 가지 예외가 있습니다. instance 경우 최적화된 이동으로 원본이 데이터를 삭제할 필요가 없더라도 원본은 관련 데이터베이스를 업데이트하여 파일이 이동 또는 복사되었음을 나타내야 할 수 있습니다.

원본이 수행된 작업을 알아야 하는 경우 데이터 개체의 IDataObject::GetData 메서드를 호출하고 CFSTR_LOGICALPERFORMEDDROPEFFECT 형식을 요청할 수 있습니다. 이 형식은 기본적으로 작업이 완료된 후 사용자의 관점에서 발생하는 작업을 반영합니다. 새 파일이 만들어지고 원래 파일이 삭제되면 사용자에게 이동 작업이 표시되고 형식의 데이터 값이 DROPEFFECT_MOVE 설정됩니다. 원본 파일이 아직 있는 경우 사용자에게 복사 작업이 표시되고 형식의 데이터 값이 DROPEFFECT_COPY 설정됩니다. 링크를 만든 경우 형식의 데이터 값이 DROPEFFECT_LINK.

CFSTR_PASTESUCCEEDED

이 형식 식별자는 대상에서 IDataObject::SetData 메서드를 통해 붙여넣기 삭제 작업이 성공했음을 데이터 개체에 알리는 데 사용됩니다. 데이터는 전역 메모리 개체를 포함하는 STGMEDIUM 구조체입니다. 구조체의 hGlobal 멤버는 DROPEFFECT 값이 포함된 DWORD를 가리킵니다. 이 형식은 필요한 경우 잘라내기 작업을 완료하고 원래 데이터를 삭제해야 한다는 것을 데이터 개체에 알리는 데 사용됩니다. 자세한 내용은 붙여넣기 작업 삭제를 참조하세요.

CFSTR_PERFORMEDDROPEFFECT

이 형식 식별자는 대상에서 데이터 전송 결과의 IDataObject::SetData 메서드를 통해 데이터 개체에 알리는 데 사용됩니다. 데이터는 전역 메모리 개체를 포함하는 STGMEDIUM 구조체입니다. 구조체의 hGlobal 멤버는 일반적으로 DROPEFFECT_MOVE 또는 DROPEFFECT_COPY 적절한 DROPEFFECT 값으로 설정된 DWORD를 가리킵니다.

이 형식은 일반적으로 최적화된 이동 또는 붙여넣기 삭제 작업과 같이 작업의 결과를 이동 또는 복사할 수 있는 경우에 사용됩니다. 대상에서 데이터 개체에 실제로 발생한 상황을 알릴 수 있는 신뢰할 수 있는 방법을 제공합니다. DoDragDrop에서 반환된 pdwEffect 값이 수행된 작업을 안정적으로 나타내지 않았기 때문에 도입되었습니다. CFSTR_PERFORMEDDROPEFFECT 형식은 최적의 이동이 수행되었음을 나타내는 신뢰할 수 있는 방법입니다.

CFSTR_PREFERREDDROPEFFECT

이 형식 식별자는 원본에서 기본 설정 데이터 전송 방법이 이동 또는 복사인지 여부를 지정하는 데 사용됩니다. 놓기 대상은 데이터 개체의 IDataObject::GetData 메서드를 호출하여 이 형식을 요청합니다. 데이터는 전역 메모리 개체를 포함하는 STGMEDIUM 구조체입니다. 구조체의 hGlobal 멤버는 DWORD 값을 가리킵니다. 이 값은 이동 작업이 선호되는 경우 DROPEFFECT_MOVE 또는 복사 작업이 선호되는 경우 DROPEFFECT_COPY 로 설정됩니다.

이 기능은 원본이 이동 또는 복사 작업을 지원할 수 있는 경우에 사용됩니다. CFSTR_PREFERREDDROPEFFECT 형식을 사용하여 대상에 대한 기본 설정을 전달합니다. 대상은 요청을 준수할 의무가 없으므로 대상은 CFSTR_PERFORMEDDROPEFFECT 형식으로 원본의 IDataObject::SetData 메서드를 호출하여 실제로 수행된 작업을 데이터 개체에 알려야 합니다.

붙여넣기 에서 삭제 작업을 사용하면 CFSTR_PREFERREDDROPFORMAT 형식을 사용하여 원본이 잘라내기 또는 복사를 수행했는지 여부를 대상에 알릴 수 있습니다. 끌어서 놓기 작업을 사용하면 CFSTR_PREFERREDDROPFORMAT 사용하여 셸의 작업을 지정할 수 있습니다. 이 형식이 없으면 셸은 컨텍스트에 따라 기본 작업을 수행합니다. instance 경우 사용자가 한 볼륨에서 파일을 끌어서 다른 볼륨에 떨어뜨리면 셸의 기본 작업은 파일을 복사하는 것입니다. 데이터 개체에 CFSTR_PREFERREDDROPFORMAT 형식을 포함하면 기본 작업을 재정의하고 셸에 파일을 복사, 이동 또는 연결하도록 명시적으로 지시할 수 있습니다. 사용자가 오른쪽 단추로 끌기를 선택하는 경우 CFSTR_PREFERREDDROPFORMAT 끌어서 놓 기 바로 가기 메뉴에서 기본 명령을 지정합니다. 사용자는 여전히 메뉴에서 다른 명령을 자유롭게 선택할 수 있습니다.

Microsoft Internet Explorer 4.0 이전에는 애플리케이션이 FILEDESCRIPTOR 구조의 dwFlags 멤버에서 FD_LINKUI 설정하여 바로 가기 파일 형식을 전송하고 있음을 표시했습니다. 그런 다음 대상은 잠재적으로 시간이 오래 걸리는 IDataObject::GetData 호출을 사용하여 FD_LINKUI 플래그가 설정되었는지 확인해야 했습니다. 이제 바로 가기가 전송되고 있음을 나타내는 기본 방법은 DROPEFFECT_LINK 설정된 CFSTR_PREFERREDDROPEFFECT 형식을 사용하는 것입니다. 그러나 이전 시스템과 이전 버전과의 호환성을 위해 원본은 여전히 FD_LINKUI 플래그를 설정해야 합니다.

CFSTR_TARGETCLSID

이 형식 식별자는 대상에서 원본에 CLSID를 제공하는 데 사용됩니다. 데이터는 전역 메모리 개체를 포함하는 STGMEDIUM 구조체입니다. 구조체의 hGlobal 멤버는 놓기 대상의 CLSID GUID를 가리킵니다.

이 형식은 주로 개체를 휴지통으로 끌어 삭제할 수 있도록 하는 데 사용됩니다. 개체가 휴지통에 놓이면 원본의 IDataObject::SetData 메서드가 휴지통의 CLSID(CLSID_RecycleBin)로 설정된 CFSTR_TARGETCLSID 형식으로 호출됩니다. 그런 다음 원본에서 원래 개체를 삭제할 수 있습니다.

CFSTR_UNTRUSTEDDRAGDROP

이 형식 식별자는 Windows Internet Explorer 및 Windows Shell에서 URLACTION_SHELL_ENHANCED_DRAGDROP_SECURITY 플래그와 함께 인터넷 Explorer 시작된 끌어서 놓기 작업을 차단하거나 프롬프트하는 메커니즘을 제공하는 데 사용됩니다.

CFSTR_UNTRUSTEDDRAGDROP 끌어서 놓기 작업의 원본에 의해 추가되어 데이터 개체에 신뢰할 수 없는 데이터가 포함될 수 있음을 지정합니다. 데이터는 전역 메모리 개체를 포함하는 STGMEDIUM 구조체로 표시됩니다. 구조체의 hGlobal 멤버는 적절한 URL 작업 플래그로 설정된 DWORD를 가리키며 PUAF_ENFORCERESTRICTED 플래그를 사용하여 IInternetSecurityManager::P rocessUrlAction 메서드를 통해 정책 검사 발생합니다.

DragWindow

이 형식은 개체의 끌기 이미지(창)를 식별하여 시각적 정보를 동적으로 업데이트할 수 있도록 끌어서 놓기 작업에 사용됩니다. 개체를 놓기 대상 위로 끌면 애플리케이션은 IDropTarget::D ragOver 또는 IDropSource::GiveFeedback 메서드에 대한 응답으로 DROPDESCRIPTION 구조를 업데이트합니다. DROPDESCRIPTION은 끌기 창의 시각적 개체에 적용할 장식을 나타내는 새 DROPIMAGETYPE 값으로 업데이트됩니다. instance 경우 파일이 이동되지 않고 복사 중이거나 개체를 해당 위치에 놓을 수 없음을 나타냅니다. 그러나 개체가 DDWM_UPDATEWINDOW 메시지를 받을 때까지 시각적 개체는 업데이트되지 않습니다. 이 형식은 받는 사람 끌기 창의 HWNDDDWM_UPDATEWINDOW 메시지의 보낸 사람에게 제공합니다.

클립보드 데이터는 TYMED_HGLOBAL 형식입니다. HWNDDWORD 표현입니다. 데이터는 Basetsd.h에 정의된 ULongToHandle 함수에 전달되어 64비트 Windows에서 사용할 64비트 HWND 를 제공할 수 있습니다.

이 형식은 Shlobj.h를 포함할 필요가 없습니다.