Formaty schowka powłoki

Formaty schowka powłoki służą do identyfikowania typu danych powłoki przesyłanych za pośrednictwem schowka. Większość formatów schowka powłoki identyfikuje typ danych, taki jak lista nazw plików lub wskaźników do list identyfikatorów elementów (PIDLs). Jednak niektóre formaty są używane do komunikacji między źródłem a obiektem docelowym. Mogą przyspieszyć proces transferu danych, obsługując operacje powłoki, takie jak zoptymalizowane przenoszenie i delete_on_paste. Dane powłoki są zawsze zawarte w obiekcie danych , który używa struktury FORMATETC jako bardziej ogólnego sposobu scharakteryzowania danych. Składowa cfFormat struktury jest ustawiona na format schowka dla określonego elementu danych. Inni członkowie udostępniają dodatkowe informacje, takie jak mechanizm transferu danych. Dane są zawarte w towarzyszącej strukturze STGMEDIUM .

Uwaga / Notatka

Standardowe identyfikatory formatu schowka mają formularz CF_XXX. Typowym przykładem jest CF_TEXT, która służy do przesyłania danych tekstowych ANSI. Te identyfikatory mają wstępnie zdefiniowane wartości i mogą być używane bezpośrednio ze strukturami FORMATETC . Z wyjątkiem CF_HDROP identyfikatory formatu powłoki nie są wstępnie zdefiniowane. Z wyjątkiem DragWindow mają formularz CFSTR_XXX. Aby odróżnić te wartości od wstępnie zdefiniowanych formatów, są one często określane jako formaty. Jednak w przeciwieństwie do wstępnie zdefiniowanych formatów muszą być zarejestrowane zarówno przez źródło, jak i obiekt docelowy, zanim będą mogły być używane do transferu danych. Aby zarejestrować format powłoki, dołącz plik nagłówka Shlobj.h i przekaż identyfikator formatu CFSTR_XXX do elementu RegisterClipboardFormat. Ta funkcja zwraca prawidłową wartość formatu schowka, która może być następnie używana jako element członkowski cfFormat struktury FORMATETC .

 

Formaty schowka powłoki są zorganizowane tutaj w trzy grupy na podstawie sposobu ich użycia.

Formaty transferowania obiektów systemu plików

Te formaty są używane do transferu co najmniej jednego pliku lub innych obiektów powłoki.

CF_HDROP

Ten format schowka jest używany podczas przesyłania lokalizacji grupy istniejących plików. W przeciwieństwie do innych formatów powłoki jest ona wstępnie zdefiniowana, więc nie ma potrzeby wywoływania formatu RegisterClipboardFormat. Dane składają się ze struktury STGMEDIUM , która zawiera obiekt pamięci globalnej. Element członkowski hGlobal struktury wskazuje strukturę DROPFILES jako jej element członkowski hGlobal .

Element członkowski pFiles struktury DROPFILES zawiera przesunięcie do tablicy znaków o podwójnej wartości null zawierającej nazwy plików. Jeśli wyodrębniasz format CF_HDROP z obiektu danych, możesz użyć metody DragQueryFile , aby wyodrębnić poszczególne nazwy plików z obiektu pamięci globalnej. Jeśli tworzysz format CF_HDROP do umieszczenia w obiekcie danych, musisz skonstruować tablicę nazw plików.

Tablica nazw plików składa się z serii ciągów, z których każda zawiera w pełni kwalifikowaną ścieżkę jednego pliku, w tym znak null zakończenia. Dodatkowy znak o wartości null jest dołączany do końcowego ciągu w celu zakończenia tablicy. Jeśli na przykład pliki c:\temp1.txt i c:\temp2.txt są przesyłane, tablica znaków wygląda następująco:

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

Uwaga / Notatka

W tym przykładzie "\0" jest używany do reprezentowania znaku null , a nie znaków literałów, które powinny być uwzględnione.

Jeśli obiekt został skopiowany do schowka w ramach operacji przeciągania i upuszczania, element członkowski pt struktury DROPFILES zawiera współrzędne punktu, w którym obiekt został porzucony. Za pomocą metody DragQueryPoint można wyodrębnić współrzędne kursora.

Jeśli ten format znajduje się w obiekcie danych, pętla przeciągania OLE symuluje WM_DROPFILES funkcjonalność z miejscami docelowymi innej niż OLE. Jest to ważne, jeśli aplikacja jest źródłem operacji przeciągania i upuszczania w systemie Windows 3.1.

CFSTR_FILECONTENTS

Ten identyfikator formatu jest używany z formatem CFSTR_FILEDESCRIPTOR do transferu danych tak, jakby był to plik, niezależnie od sposobu ich przechowywania. Dane składają się ze struktury STGMEDIUM , która reprezentuje zawartość jednego pliku. Plik jest zwykle reprezentowany jako obiekt strumienia, co pozwala uniknąć konieczności umieszczania zawartości pliku w pamięci. W takim przypadku element członkowski strukturySTGMEDIUM jest ustawiony na TYMED_ISTREAM, a plik jest reprezentowany przez interfejs IStream . Plik może być również obiektem magazynu lub pamięci globalnej (TYMED_ISTORAGE lub TYMED_HGLOBAL). Skojarzony format CFSTR_FILEDESCRIPTOR zawiera strukturę FILEDESCRIPTOR dla każdego pliku, która określa nazwę i atrybuty pliku.

Element docelowy traktuje dane skojarzone z formatem CFSTR_FILECONTENTS tak, jakby był to plik. Gdy obiekt docelowy wywołuje obiekt IDataObject::GetData w celu wyodrębnienia danych, określa określony plik, ustawiając element członkowski lindex struktury FORMATETC na indeks fileDESCRIPTOR w formacie towarzyszącym CFSTR_FILEDESCRIPTOR . Następnie obiekt docelowy używa zwróconego wskaźnika interfejsu lub dojścia pamięci globalnej do wyodrębnienia danych.

CFSTR_FILEDESCRIPTOR

Ten identyfikator formatu jest używany z formatem CFSTR_FILECONTENTS do transferu danych jako grupy plików. Te dwa formaty są preferowanym sposobem transferu obiektów powłoki, które nie są przechowywane jako pliki systemu plików. Na przykład te formaty mogą służyć do transferu grupy wiadomości e-mail jako pojedynczych plików, mimo że każda wiadomość e-mail jest faktycznie przechowywana jako blok danych w bazie danych. Dane składają się ze struktury STGMEDIUM , która zawiera obiekt pamięci globalnej. Element członkowski hGlobal struktury wskazuje strukturę FILEGROUPDESCRIPTOR , po której następuje tablica zawierająca jedną strukturę FILEDESCRIPTOR dla każdego pliku w grupie. Dla każdej struktury FILEDESCRIPTOR istnieje osobny format CFSTR_FILECONTENTS zawierający zawartość pliku. Aby zidentyfikować format CFSTR_FILECONTENTS określonego pliku, ustaw wartość lIndex struktury FORMATETC na indeks zerowy struktury FILEDESCRIPTOR pliku.

Format CFSTR_FILEDESCRIPTOR jest często używany do transferu danych tak, jakby był to grupa plików, niezależnie od sposobu ich przechowywania. Z perspektywy obiektu docelowego każdy format CFSTR_FILECONTENTS reprezentuje pojedynczy plik i jest odpowiednio traktowany. Jednak źródło może przechowywać dane w dowolny sposób. Format CSFTR_FILECONTENTS może odpowiadać jednemu plikowi, ale może również reprezentować dane wyodrębnione przez źródło z bazy danych lub dokumentu tekstowego.

CFSTR_FILENAME

Ten identyfikator formatu służy do transferu pojedynczego pliku. Dane składają się ze struktury STGMEDIUM , która zawiera obiekt pamięci globalnej. Element członkowski hGlobal struktury wskazuje pojedynczy ciąg zakończony o wartości null zawierający w pełni kwalifikowaną ścieżkę pliku. Ten format został zastąpiony przez CF_HDROP ale jest obsługiwany w celu zapewnienia zgodności z poprzednimi wersjami aplikacji Windows 3.1.

CFSTR_FILENAMEMAP

Ten identyfikator formatu jest używany, gdy nazwa grupy plików w formacie CF_HDROP jest zmieniana, a także transferowana. Dane składają się ze struktury STGMEDIUM , która zawiera obiekt pamięci globalnej. Element członkowski hGlobal struktury wskazuje na tablicę znaków o podwójnej wartości null. Ta tablica zawiera nową nazwę dla każdego pliku w tej samej kolejności, w którym pliki są wymienione w towarzyszącym formacie CF_HDROP. Format tablicy znaków jest taki sam jak format używany przez CF_HDROP do wyświetlania listy przesłanych plików.

CFSTR_MOUNTEDVOLUME

Ten identyfikator formatu służy do transferu ścieżki na zainstalowanym woluminie. Jest on podobny do CF_HDROP, ale zawiera tylko jedną ścieżkę i może obsługiwać dłuższe ciągi ścieżek, które mogą być potrzebne do reprezentowania ścieżki, gdy wolumin jest zainstalowany w folderze. Dane składają się ze struktury STGMEDIUM , która zawiera obiekt pamięci globalnej. Element członkowski hGlobal struktury wskazuje pojedynczy ciąg zakończony o wartości null zawierający w pełni kwalifikowaną ścieżkę pliku. Ciąg ścieżki musi kończyć się znakiem "\", po którym następuje zakończenie null.

Przed Windows 2000 woluminy mogą być instalowane tylko na literach dysków. W przypadku systemów Windows 2000 i nowszych z sformatowanym dyskiem NTFS można również zainstalować woluminy w pustych folderach. Ta funkcja umożliwia zamontowanie woluminu bez zajmowania litery dysku. Zainstalowany wolumin może używać dowolnego obecnie obsługiwanego formatu, w tym FAT, FAT32, NTFS i CDFS.

Strony można dodać do arkusza właściwości właściwości dysku, implementując procedurę obsługi arkusza właściwości. Jeśli wolumin jest zainstalowany na literę dysku, powłoka przekazuje informacje o ścieżce do programu obsługi przy użyciu formatu CF_HDROP . W przypadku systemów Windows 2000 i nowszych format CF_HDROP jest używany, gdy wolumin jest zainstalowany na literę dysku, podobnie jak w przypadku wcześniejszych systemów. Jeśli jednak wolumin jest zainstalowany w folderze, identyfikator formatu CFSTR_MOUNTEDVOLUME jest używany zamiast CF_HDROP.

Jeśli tylko litery dysku będą używane do instalowania woluminów, będą używane tylko CF_HDROP , a istniejące programy obsługi arkuszy właściwości będą działać tak jak we wcześniejszych systemach. Jeśli jednak program obsługi ma wyświetlać stronę dla woluminów zainstalowanych w folderach, a także liter dysku, program obsługi musi być w stanie zrozumieć zarówno formaty CSFTR_MOUNTEDVOLUME, jak i CF_HDROP.

CFSTR_SHELLIDLIST

Ten identyfikator formatu jest używany podczas przesyłania lokalizacji co najmniej jednego istniejącego obiektu przestrzeni nazw. Jest on używany w taki sam sposób, jak CF_HDROP, ale zawiera on listy PIDLs zamiast ścieżek systemu plików. Korzystanie z list PIDLs umożliwia format CFSTR_SHELLIDLIST do obsługi obiektów wirtualnych, a także obiektów systemu plików. Dane są strukturą STGMEDIUM zawierającą obiekt pamięci globalnej. Składowa hGlobal struktury wskazuje strukturę CIDA .

Element członkowski aoffset struktury CIDA to tablica zawierająca przesunięcia na początek struktury ITEMIDLIST dla każdego przesyłanego kodu PIDL. Aby wyodrębnić określony identyfikator PIDL, najpierw określ jego indeks. Następnie dodaj wartość aoffset odpowiadającą indeksowi adresowi struktury CIDA .

Pierwszy element elementu aoffset zawiera przesunięcie do w pełni kwalifikowanego kodu PIDL folderu nadrzędnego. Jeśli ten identyfikator PIDL jest pusty, folder nadrzędny jest pulpitem. Każdy z pozostałych elementów tablicy zawiera przesunięcie do jednej z list PIDL do przeniesienia. Wszystkie te listy PIDLs są powiązane z numerem PIDL folderu nadrzędnego.

Poniższe dwa makra mogą służyć do pobierania piDLs ze struktury CIDA . Pierwszy pobiera wskaźnik do struktury i pobiera identyfikator PIDL folderu nadrzędnego. Drugi pobiera wskaźnik do struktury i pobiera jedną z pozostałych identyfikatorów PIDLs zidentyfikowaną przez jej indeks oparty na zera.

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

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

Uwaga / Notatka

Wartość zwracana przez te makra jest wskaźnikiem do struktury ITEMIDLIST języka PIDL. Ponieważ te struktury różnią się długością, należy określić koniec struktury, przechodząc przez każdą ze struktur SHITEMID struktury ITEMIDLIST, dopóki nie osiągniesz dwu bajtowej wartości NULL, która oznacza koniec.

CFSTR_SHELLIDLISTOFFSET

Ten identyfikator formatu jest używany z formatami, takimi jak CF_HDROP, CFSTR_SHELLIDLIST i CFSTR_FILECONTENTS , aby określić położenie grupy obiektów po przeniesieniu. Dane składają się ze struktury STGMEDIUM , która zawiera obiekt pamięci globalnej. Element członkowski hGlobal struktury wskazuje tablicę struktur POINT . Pierwsza struktura określa współrzędne ekranu w pikselach lewego górnego rogu prostokąta, który otacza grupę. Pozostała część struktur określa lokalizacje poszczególnych obiektów względem pozycji grupy. Muszą one być w takiej samej kolejności, jak używane do wyświetlania listy obiektów w skojarzonym formacie.

Formaty transferowania obiektów wirtualnych

Format CFSTR_SHELLIDLIST może służyć do transferu zarówno systemu plików, jak i obiektów wirtualnych. Istnieje jednak również kilka wyspecjalizowanych formatów przesyłania określonych typów obiektów wirtualnych.

CFSTR_NETRESOURCES

Ten identyfikator formatu jest używany podczas przesyłania zasobów sieciowych, takich jak domena lub serwer. Dane są strukturą STGMEDIUM zawierającą obiekt pamięci globalnej. Element członkowski hGlobal struktury wskazuje strukturę NRESARRAY . Element członkowski nr tej struktury wskazuje strukturę NETRESOURCE, której element członkowski lpRemoteName zawiera ciąg o wartości null identyfikujący zasób sieciowy. Obiekt docelowy upuszczania może następnie używać danych z dowolną Windows Networking (WNet) funkcji interfejsu API, takich jak WNetAddConnection do wykonywania operacji sieciowych na obiekcie.

CFSTR_PRINTERGROUP

Ten identyfikator formatu jest używany podczas przesyłania przyjaznych nazw drukarek. Dane są strukturą STGMEDIUM zawierającą obiekt pamięci globalnej. Element członkowski hGlobal struktury wskazuje ciąg w tym samym formacie, co w przypadku CF_HDROP. Jednak element członkowski pFiles struktury DROPFILES zawiera co najmniej jedną przyjazną nazwę drukarek zamiast ścieżek plików.

CFSTR_INETURL

Ten identyfikator formatu zastępuje CFSTR_SHELLURL (przestarzałe). Jeśli chcesz, aby aplikacja manipulowała adresami URL schowka, użyj CFSTR_INETURL zamiast CFSTR_SHELLURL (przestarzałe). Ten format zapewnia najlepszą reprezentację schowka pojedynczego adresu URL. Jeśli kod UNICODE nie jest zdefiniowany, aplikacja pobiera CF_TEXT/CFSTR_SHELLURL wersję adresu URL. Jeśli kod UNICODE jest zdefiniowany, aplikacja pobiera CF_UNICODE wersję adresu URL.

CFSTR_SHELLURL (przestarzałe)

Uwaga / Notatka

Ten identyfikator formatu został przestarzały; Zamiast tego użyj CFSTR_INETURL.

 

Formaty komunikacji między źródłem a obiektem docelowym

Te identyfikatory formatu umożliwiają komunikację między źródłem a obiektem docelowym. Formaty towarzyszą danym i zapewniają aplikacjom większą kontrolę nad operacjami przenoszenia kopiowania i wklejania lub przeciągania i upuszczania obejmujących obiekty powłoki.

CFSTR_INDRAGLOOP

Ten identyfikator formatu jest używany przez obiekt danych w celu wskazania, czy znajduje się w pętli przeciągania i upuszczania. Dane są strukturą STGMEDIUM zawierającą obiekt pamięci globalnej. Element członkowski hGlobal struktury wskazuje wartość DWORD . Jeśli wartość DWORD jest niezerowa, obiekt danych znajduje się w pętli przeciągania i upuszczania. Jeśli wartość jest ustawiona na zero, obiekt danych nie znajduje się w pętli przeciągania i upuszczania.

Niektóre miejsca docelowe upuszczania mogą wywoływać obiekt IDataObject::GetData i próbować wyodrębnić dane, gdy obiekt jest nadal w pętli przeciągania i upuszczania. Pełne renderowanie obiektu dla każdego takiego wystąpienia może spowodować zatrzymanie kursora przeciągania. Jeśli obiekt danych obsługuje CFSTR_INDRAGLOOP, obiekt docelowy może zamiast tego użyć tego formatu, aby sprawdzić stan pętli przeciągania i upuszczania i uniknąć intensywnego renderowania pamięci obiektu, dopóki nie zostanie on rzeczywiście usunięty. Formaty intensywnie korzystające z pamięci do renderowania powinny być nadal uwzględniane w module wyliczania FORMATETC i w wywołaniach elementu IDataObject::QueryGetData. Jeśli obiekt danych nie ustawi CFSTR_INDRAGLOOP, powinien działać tak, jakby wartość jest ustawiona na zero.

CFSTR_LOGICALPERFORMEDDROPEFFECT

Wersja 5.0.Ten identyfikator formatu umożliwia źródło upuszczania wywołanie metody IDataObject::GetData obiektu danych w celu określenia wyniku transferu danych powłoki. Dane są strukturą STGMEDIUM zawierającą obiekt pamięci globalnej. Element członkowski hGlobal struktury wskazuje wartość DWORD zawierającą wartość DROPEFFECT .

Identyfikator formatu CFSTR_PERFORMEDDROPEFFECT miał umożliwić obiektowi docelowemu wskazanie obiektu danych, jaki operacja rzeczywiście miała miejsce. Jednak powłoka używa zoptymalizowanych ruchów dla obiektów systemu plików, gdy jest to możliwe. W takim przypadku powłoka zwykle ustawia wartość CFSTR_PERFORMEDDROPEFFECT na DROPEFFECT_NONE, aby wskazać obiekt danych, że oryginalne dane zostały usunięte. W związku z tym źródło nie może użyć wartości CFSTR_PERFORMEDDROPEFFECT, aby określić, która operacja została wykonana. Chociaż większość źródeł nie potrzebuje tych informacji, istnieją pewne wyjątki. Na przykład mimo że zoptymalizowane ruchy eliminują potrzebę usunięcia danych przez źródło, źródło może nadal wymagać zaktualizowania powiązanej bazy danych, aby wskazać, że pliki zostały przeniesione lub skopiowane.

Jeśli źródło musi wiedzieć, która operacja miała miejsce, może wywołać metodę IDataObject::GetData obiektu danych i zażądać formatu CFSTR_LOGICALPERFORMEDDROPEFFECT. Ten format zasadniczo odzwierciedla to, co dzieje się z punktu widzenia użytkownika po zakończeniu operacji. Jeśli zostanie utworzony nowy plik i oryginalny plik zostanie usunięty, użytkownik zobaczy operację przenoszenia, a wartość danych formatu zostanie ustawiona na DROPEFFECT_MOVE. Jeśli oryginalny plik nadal istnieje, użytkownik zobaczy operację kopiowania, a wartość danych formatu jest ustawiona na DROPEFFECT_COPY. Jeśli link został utworzony, wartość danych formatu będzie DROPEFFECT_LINK.

CFSTR_PASTESUCCEEDED

Ten identyfikator formatu jest używany przez obiekt docelowy do informowania obiektu danych za pośrednictwem metody IDataObject::SetData , że operacja usuwania w wklejaniu zakończyła się pomyślnie. Dane są strukturą STGMEDIUM zawierającą obiekt pamięci globalnej. Element członkowski hGlobal struktury wskazuje wartość DWORD zawierającą wartość DROPEFFECT . Ten format służy do powiadamiania obiektu danych o konieczności ukończenia operacji wycinania i usunięcia oryginalnych danych, jeśli to konieczne. Aby uzyskać więcej informacji, zobacz Operacje usuwania na wklejaniu.

CFSTR_PERFORMEDDROPEFFECT

Ten identyfikator formatu jest używany przez obiekt docelowy do informowania obiektu danych za pośrednictwem metody IDataObject::SetData wyniku transferu danych. Dane są strukturą STGMEDIUM zawierającą obiekt pamięci globalnej. Element członkowski hGlobal struktury wskazuje wartość DWORD ustawioną na odpowiednią wartość DROPEFFECT , zwykle DROPEFFECT_MOVE lub DROPEFFECT_COPY.

Ten format jest zwykle używany, gdy wynik operacji może być przeniesiony lub skopiowany, na przykład w zoptymalizowanej operacji przenoszenia lub usuwania podczas wklejania. Zapewnia niezawodny sposób na określenie obiektu docelowego, który informuje obiekt danych o tym, co się stało. Wprowadzono ją, ponieważ wartość pdwEffect zwrócona przez doDragDrop nie wskazywała niezawodnie, która operacja miała miejsce. Format CFSTR_PERFORMEDDROPEFFECT jest niezawodnym sposobem wskazania, że nastąpił niezoptymalizowany ruch.

CFSTR_PREFERREDDROPEFFECT

Ten identyfikator formatu jest używany przez źródło w celu określenia, czy preferowaną metodą transferu danych jest przenoszenie, kopiowanie lub łącze. Obiekt docelowy drop żąda tego formatu, wywołując metodę IDataObject::GetDataObject obiektu danych. Dane są strukturą STGMEDIUM zawierającą obiekt pamięci globalnej. Element członkowski hGlobal struktury wskazuje wartość DWORD . Ta wartość jest ustawiona na DROPEFFECT_MOVE, jeśli preferowana jest operacja przenoszenia, DROPEFFECT_COPY jeśli preferowana jest operacja kopiowania lub DROPEFFECT_LINK, jeśli preferowana jest operacja łącza.

Ta funkcja jest używana, gdy źródło może obsługiwać operację przenoszenia lub kopiowania. Używa formatu CFSTR_PREFERREDDROPEFFECT , aby przekazać swoje preferencje do obiektu docelowego. Ponieważ obiekt docelowy nie jest zobowiązany do honorowania żądania, obiekt docelowy musi wywołać metodę IDataObject::SetData źródła z formatem CFSTR_PERFORMEDDROPEFFECT , aby poinformować obiekt danych, który operacja została rzeczywiście wykonana.

W przypadku operacji delete-on-paste format CFSTR_PREFERREDDROPEFFECT służy do określania docelowego, czy źródło zrobiło wycinanie, czy kopiowanie. Za pomocą operacji przeciągania i upuszczania można użyć formatu CFSTR_PREFERREDDROPEFFECT , aby określić akcję powłoki. Jeśli ten format nie jest obecny, powłoka wykonuje akcję domyślną na podstawie kontekstu. Jeśli na przykład użytkownik przeciąga plik z jednego woluminu i usuwa go na innym woluminie, domyślną akcją powłoki jest skopiowanie pliku. Po uwzględnieniu formatu CFSTR_PREFERREDDROPEFFECT w obiekcie danych można zastąpić akcję domyślną i jawnie poinformować powłokę o skopiowaniu, przeniesieniu lub łączeniu pliku. Jeśli użytkownik zdecyduje się przeciągnąć prawym przyciskiem, CFSTR_PREFERREDDROPEFFECT format określa domyślne polecenie w menu skrótów przeciągania i upuszczania . Użytkownik jest nadal bezpłatny, aby wybrać inne polecenia w menu.

Przed Microsoft Internet Explorer 4.0 aplikacja wskazała, że przesyła typy plików skrótów przez ustawienie FD_LINKUI w dwFlags składowej FILEDESCRIPTOR. Następnie obiekty docelowe musiały używać potencjalnie czasochłonnego wywołania obiektu IDataObject::GetData , aby dowiedzieć się, czy ustawiono flagę FD_LINKUI. Teraz preferowanym sposobem wskazania, że skróty są przesyłane, jest użycie formatu CFSTR_PREFERREDDROPEFFECT ustawionego na DROPEFFECT_LINK. Jednak w celu zapewnienia zgodności z poprzednimi wersjami ze starszymi systemami źródła powinny nadal ustawiać flagę FD_LINKUI.

CFSTR_TARGETCLSID

Ten identyfikator formatu jest używany przez obiekt docelowy w celu udostępnienia jego identyfikatora CLSID do źródła. Dane są strukturą STGMEDIUM zawierającą obiekt pamięci globalnej. Element członkowski hGlobal struktury wskazuje identyfikator GUID IDENTYFIKATORa CLSID obiektu docelowego upuszczania.

Ten format jest używany głównie do zezwalania na usuwanie obiektów przez przeciąganie ich do Kosza. Gdy obiekt zostanie porzucony w Koszu, metoda IDataObject::SetData źródła jest wywoływana przy użyciu formatu CFSTR_TARGETCLSID ustawionego na identyfikator CLSID Kosza (CLSID_RecycleBin). Źródło może następnie usunąć oryginalny obiekt.

CFSTR_UNTRUSTEDDRAGDROP

Ten identyfikator formatu jest używany przez Windows Internet Explorer i powłokę Windows w celu zapewnienia mechanizmu blokowania lub monitowania o operacje przeciągania i upuszczania pochodzące z Internet Explorer w połączeniu z flagą URLACTION_SHELL_ENHANCED_DRAGDROP_SECURITY.

CFSTR_UNTRUSTEDDRAGDROP jest dodawany przez źródło operacji przeciągania i upuszczania w celu określenia, że obiekt danych może zawierać niezaufane dane. Dane są reprezentowane przez strukturę STGMEDIUM zawierającą obiekt pamięci globalnej. Element członkowski hGlobal struktury wskazuje właściwość DWORD ustawioną na odpowiednią flagę akcji adresu URL , aby spowodować sprawdzenie zasad za pomocą metody IInternetSecurityManager::P rocessUrlAction przy użyciu flagi PUAF_ENFORCERESTRICTED .

Przeciągnij w systemie Windows

Ten format jest używany w operacji przeciągania i upuszczania w celu identyfikacji obrazu przeciągania (okna) obiektu, dzięki czemu jego informacje wizualne mogą być aktualizowane dynamicznie. Po przeciągnięciu obiektu docelowego upuszczania aplikacja aktualizuje strukturę DROPDESCRIPTION w odpowiedzi na metodę IDropTarget::D ragOver lub IDropSource::GiveFeedback . Funkcja DROPDESCRIPTION została zaktualizowana o nową wartość DROPIMAGETYPE , która wskazuje, że dekoracja ma zostać zastosowana do wizualizacji okna przeciągania; na przykład wskazanie, że plik jest kopiowany, a nie przenoszony lub że obiekt nie może zostać porzucony do tej lokalizacji. Jednak dopóki obiekt nie otrzyma komunikatu DDWM_UPDATEWINDOW , wizualizacje nie zostaną zaktualizowane. Ten format zawiera HWND okna przeciągania adresata do nadawcy komunikatu DDWM_UPDATEWINDOW .

Dane schowka są typu TYMED_HGLOBAL. Jest to reprezentacja DWORD HWND. Dane można przekazać do funkcji ULongToHandle zdefiniowanej w pliku Basetsd.h, aby udostępnić 64-bitową HWND do użycia w Windows 64-bitowej.

Ten format nie wymaga włączenia pliku Shlobj.h.