Delen via


Shell Klembord-indelingen

Shell-klembordindelingen worden gebruikt om het type Shell-gegevens te identificeren dat via het klembord wordt overgedragen. De meeste Shell-klembordindelingen identificeren een type gegevens, zoals een lijst met bestandsnamen of aanwijzers naar item-id-lijsten (PIDLs). Sommige indelingen worden echter gebruikt voor communicatie tussen bron en doel. Ze kunnen het proces voor gegevensoverdracht versnellen door Shell-bewerkingen zoals geoptimaliseerde verplaatsing en delete_on_pastete ondersteunen. Shell-gegevens zijn altijd opgenomen in een gegevensobject dat gebruikmaakt van een FORMATETC- structuur als een meer algemene manier om gegevens te karakteriseren. Het cfFormat lid van de structuur is ingesteld op de klembordindeling voor het specifieke gegevensitem. De andere leden bieden aanvullende informatie, zoals het mechanisme voor gegevensoverdracht. De gegevens bevinden zich in een bijbehorende STGMEDIUM structuur.

Notitie

Standaard-id's voor klembordindeling hebben het formulier CF_XXX-. Een veelvoorkomend voorbeeld is CF_TEXT, dat wordt gebruikt voor het overdragen van ANSI-tekstgegevens. Deze id's hebben vooraf gedefinieerde waarden en kunnen rechtstreeks worden gebruikt met FORMATETC- structuren. Met uitzondering van CF_HDROPzijn shell-indelings-id's niet vooraf gedefinieerd. Met uitzondering van DragWindow hebben ze het formulier CFSTR_XXX. Als u deze waarden wilt onderscheiden van vooraf gedefinieerde notaties, worden ze vaak gewoon indelingengenoemd. In tegenstelling tot vooraf gedefinieerde indelingen moeten ze echter worden geregistreerd door zowel de bron als het doel voordat ze kunnen worden gebruikt om gegevens over te dragen. Als u een Shell-indeling wilt registreren, neemt u het headerbestand Shlobj.h op en geeft u de CFSTR_XXX-indelings-id door aan RegisterClipboardFormat. Deze functie retourneert een geldige waarde voor de klembordindeling, die vervolgens kan worden gebruikt als de cfFormat lid van een FORMATETC- structuur.

 

De Shell Klembord-indelingen zijn hier ingedeeld in drie groepen, op basis van hoe ze worden gebruikt.

Indelingen voor het overdragen van bestandssysteemobjecten

Deze indelingen worden gebruikt om een of meer bestanden of andere Shell-objecten over te dragen.

CF_HDROP

Deze klembordindeling wordt gebruikt bij het overbrengen van de locaties van een groep bestaande bestanden. In tegenstelling tot de andere Shell-indelingen is deze vooraf gedefinieerd, dus u hoeft RegisterClipboardFormatniet aan te roepen. De gegevens bestaan uit een STGMEDIUM structuur die een globaal geheugenobject bevat. Het hGlobal lid van de structuur verwijst naar een DROPFILES structuur als hGlobal lid.

De pFiles lid van de structuur DROPFILES bevat een verschuiving naar een dubbele null--beëindigde tekenmatrix die de bestandsnamen bevat. Als u een CF_HDROP-indeling uit een gegevensobject extraheert, kunt u DragQueryFile- gebruiken om afzonderlijke bestandsnamen uit het globale geheugenobject te extraheren. Als u een CF_HDROP-indeling maakt om in een gegevensobject te plaatsen, moet u de bestandsnaammatrix maken.

De bestandsnaammatrix bestaat uit een reeks tekenreeksen, die elk het volledig gekwalificeerde pad van één bestand bevatten, inclusief het afsluitende NULL- teken. Er wordt een extra null- teken toegevoegd aan de uiteindelijke tekenreeks om de matrix te beëindigen. Als de bestanden c:\temp1.txt en c:\temp2.txt worden overgebracht, ziet de tekenmatrix er als volgt uit:

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

Notitie

In dit voorbeeld wordt \0 gebruikt om het null- teken weer te geven, niet de letterlijke tekens die moeten worden opgenomen.

Als het object is gekopieerd naar het klembord als onderdeel van een slepen-en-neerzetten-bewerking, bevat het pt lid van de DROPFILES structuur de coördinaten van het punt waar het object is verwijderd. U kunt DragQueryPoint- gebruiken om de cursorcoördinaten op te halen.

Als deze indeling aanwezig is in een gegevensobject, simuleert een OLE-slepenlus WM_DROPFILES functionaliteit met niet-OLE-neervaldoelen. Dit is belangrijk als uw toepassing de bron is van een slepen-en-neerzetten-bewerking op een Windows 3.1-systeem.

CFSTR_FILECONTENTS

Deze indelings-id wordt gebruikt met de CFSTR_FILEDESCRIPTOR-indeling om gegevens over te dragen alsof het een bestand is, ongeacht hoe het daadwerkelijk wordt opgeslagen. De gegevens bestaan uit een STGMEDIUM structuur die de inhoud van één bestand vertegenwoordigt. Het bestand wordt normaal gesproken weergegeven als een stroomobject, waardoor de inhoud van het bestand niet in het geheugen moet worden geplaatst. In dat geval wordt de gekoppelde lid van de STGMEDIUM- structuur ingesteld op TYMED_ISTREAM en wordt het bestand vertegenwoordigd door een IStream interface. Het bestand kan ook een opslag- of globaal geheugenobject zijn (TYMED_ISTORAGE of TYMED_HGLOBAL). De bijbehorende CFSTR_FILEDESCRIPTOR-indeling bevat een FILEDESCRIPTOR- structuur voor elk bestand dat de naam en kenmerken van het bestand aangeeft.

Het doel behandelt de gegevens die zijn gekoppeld aan een CFSTR_FILECONTENTS-indeling alsof het een bestand is. Wanneer het doel IDataObject::GetData aanroept om de gegevens te extraheren, wordt een bepaald bestand opgegeven door het lid van de FORMATETC- structuur in te stellen op de op nul gebaseerde index van de FILEDESCRIPTOR- structuur in de bijbehorende CFSTR_FILEDESCRIPTOR-indeling. Het doel gebruikt vervolgens de geretourneerde interfacepointer of globale geheugengreep om de gegevens te extraheren.

CFSTR_FILEDESCRIPTOR

Deze indelings-id wordt gebruikt met de CFSTR_FILECONTENTS-indeling om gegevens als een groep bestanden over te dragen. Deze twee indelingen zijn de voorkeurswijze voor het overdragen van Shell-objecten die niet zijn opgeslagen als bestandssysteembestanden. Deze indelingen kunnen bijvoorbeeld worden gebruikt om een groep e-mailberichten als afzonderlijke bestanden over te dragen, zelfs als elke e-mail daadwerkelijk wordt opgeslagen als een blok gegevens in een database. De gegevens bestaan uit een STGMEDIUM structuur die een globaal geheugenobject bevat. Het hGlobal lid van de structuur verwijst naar een FILEGROUPDESCRIPTOR structuur die wordt gevolgd door een matrix met één FILEDESCRIPTOR structuur voor elk bestand in de groep. Voor elke FILEDESCRIPTOR- structuur is er een afzonderlijke CFSTR_FILECONTENTS-indeling die de inhoud van het bestand bevat. Als u de CFSTR_FILECONTENTS-indeling van een bepaald bestand wilt identificeren, stelt u de lIndex- waarde van de FORMATETC- structuur in op nul gebaseerde index van de FILEDESCRIPTOR- structuur van het bestand.

De CFSTR_FILEDESCRIPTOR-indeling wordt vaak gebruikt om gegevens over te dragen alsof het een groep bestanden is, ongeacht hoe deze daadwerkelijk worden opgeslagen. Vanuit het perspectief van het doel vertegenwoordigt elke CFSTR_FILECONTENTS-indeling één bestand en wordt dienovereenkomstig behandeld. De bron kan de gegevens echter op elke gewenste manier opslaan. Hoewel een CSFTR_FILECONTENTS-indeling mogelijk overeenkomt met één bestand, kan het ook gegevens vertegenwoordigen die zijn geëxtraheerd door de bron uit een database of tekstdocument.

CFSTR_FILENAME

Deze indelings-id wordt gebruikt om één bestand over te dragen. De gegevens bestaan uit een STGMEDIUM structuur die een globaal geheugenobject bevat. Het hGlobal lid van de structuur verwijst naar één null--beëindigde tekenreeks met het volledig gekwalificeerde bestandspad van het bestand. Deze indeling is vervangen door CF_HDROP, maar wordt ondersteund voor achterwaartse compatibiliteit met Windows 3.1-toepassingen.

CFSTR_FILENAMEMAP

Deze indelings-id wordt gebruikt wanneer een groep bestanden in CF_HDROP indeling wordt hernoemd en overgedragen. De gegevens bestaan uit een STGMEDIUM structuur die een globaal geheugenobject bevat. Het hGlobal lid van de structuur verwijst naar een dubbele null--beëindigde tekenmatrix. Deze matrix bevat een nieuwe naam voor elk bestand, in dezelfde volgorde dat de bestanden worden vermeld in de bijbehorende CF_HDROP-indeling. De indeling van de tekenmatrix is hetzelfde als de indeling die door CF_HDROP wordt gebruikt om de overgedragen bestanden weer te geven.

CFSTR_MOUNTEDVOLUME

Deze indelings-id wordt gebruikt om een pad over te dragen op een gekoppeld volume. Het is vergelijkbaar met CF_HDROP, maar het bevat slechts één pad en kan de langere padtekenreeksen verwerken die mogelijk nodig zijn om een pad weer te geven wanneer het volume is gekoppeld aan een map. De gegevens bestaan uit een STGMEDIUM structuur die een globaal geheugenobject bevat. Het hGlobal lid van de structuur verwijst naar één null-tekenreeks-beëindigd met het volledig gekwalificeerde bestandspad. De padtekenreeks moet eindigen met een \-teken, gevolgd door het afsluitende NULL-.

Vóór Windows 2000 konden volumes alleen worden gekoppeld op stationsletters. Voor Windows 2000- en hogersystemen met een ntfs-geformatteerd station kunt u ook volumes koppelen aan lege mappen. Met deze functie kan een volume worden gekoppeld zonder een stationsletter in beslag te nemen. Het gekoppelde volume kan elke momenteel ondersteunde indeling gebruiken, waaronder FAT, FAT32, NTFS en CDFS.

U kunt pagina's toevoegen aan een eigenschappenvenster station door een eigenschappenvensterhandlerte implementeren. Als het volume is gekoppeld aan een stationsletter, geeft de Shell padinformatie door aan de handler met de CF_HDROP-indeling. Met Windows 2000- en hogersystemen wordt de CF_HDROP-indeling gebruikt wanneer een volume op een stationsletter wordt gekoppeld, net als bij eerdere systemen. Als een volume echter is gekoppeld aan een map, wordt de CFSTR_MOUNTEDVOLUME indelings-id gebruikt in plaats van CF_HDROP.

Als alleen stationsletters worden gebruikt om volumes te koppelen, worden alleen CF_HDROP gebruikt en werken bestaande handlers voor eigenschappenvensters zoals bij eerdere systemen. Als u echter wilt dat uw handler een pagina weergeeft voor volumes die zijn gekoppeld aan mappen en stationsletters, moet de handler zowel de indelingen CSFTR_MOUNTEDVOLUME als CF_HDROP kunnen begrijpen.

CFSTR_SHELLIDLIST

Deze indelings-id wordt gebruikt bij het overdragen van de locaties van een of meer bestaande naamruimteobjecten. Het wordt op veel dezelfde manier gebruikt als CF_HDROP, maar bevat PIDLs in plaats van bestandssysteempaden. Met behulp van PIDLs kan de CFSTR_SHELLIDLIST-indeling virtuele objecten en bestandssysteemobjecten verwerken. De gegevens zijn een STGMEDIUM structuur die een globaal geheugenobject bevat. Het hGlobal lid van de structuur verwijst naar een CIDA- structuur.

De aoffset lid van de CIDA- structuur is een matrix met verschuivingen aan het begin van de ITEMIDLIST structuur voor elke PIDL die wordt overgedragen. Als u een bepaalde PIDL wilt extraheren, moet u eerst de index bepalen. Voeg vervolgens de aoffset waarde die overeenkomt met die index toe aan het adres van de CIDA structuur.

Het eerste element van aoffset bevat een verschuiving naar de volledig gekwalificeerde PIDL van een bovenliggende map. Als deze PIDL leeg is, is de bovenliggende map het bureaublad. Elk van de resterende elementen van de matrix bevat een verschuiving naar een van de PIDLs die moeten worden overgedragen. Al deze PIDLs zijn relatief ten opzichte van de PIDL van de bovenliggende map.

De volgende twee macro's kunnen worden gebruikt om PIDLs op te halen uit een CIDA structuur. De eerste verwijst naar de structuur en haalt de PIDL van de bovenliggende map op. De tweede neemt een aanwijzer naar de structuur en haalt een van de andere PIDLs op, geïdentificeerd door de index op basis van nul.

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

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

Notitie

De waarde die door deze macro's wordt geretourneerd, is een aanwijzer naar de ITEMIDLIST- structuur van de PIDL. Aangezien deze structuren in lengte variëren, moet u het einde van de structuur bepalen door elk van de ITEMIDLIST structuur SHITEMID- structuren te doorlopen totdat u de twee-byte NULL- die het einde markeert.

CFSTR_SHELLIDLISTOFFSET

Deze indelings-id wordt gebruikt met indelingen zoals CF_HDROP, CFSTR_SHELLIDLISTen CFSTR_FILECONTENTS om de positie van een groep objecten op te geven na een overdracht. De gegevens bestaan uit een STGMEDIUM structuur die een globaal geheugenobject bevat. De structuur hGlobal lid verwijst naar een matrix van POINT structuren. De eerste structuur geeft de schermcoördinaten in pixels op van de linkerbovenhoek van de rechthoek die de groep omsluit. De rest van de structuren specificeert de locaties van de afzonderlijke objecten ten opzichte van de positie van de groep. Ze moeten zich in dezelfde volgorde bevinden als de objecten in de bijbehorende indeling.

Indelingen voor het overdragen van virtuele objecten

De CFSTR_SHELLIDLIST-indeling kan worden gebruikt om zowel bestandssysteem- als virtuele objecten over te dragen. Er zijn echter ook verschillende gespecialiseerde indelingen voor het overdragen van bepaalde typen virtuele objecten.

CFSTR_NETRESOURCES

Deze indelings-id wordt gebruikt bij het overdragen van netwerkbronnen, zoals een domein of server. De gegevens zijn een STGMEDIUM structuur die een globaal geheugenobject bevat. De hGlobal lid van de structuur verwijst naar een NRESARRAY- structuur. De nr lid van die structuur geeft een NETRESOURCE structuur aan waarvan lpRemoteName lid een null--beëindigde tekenreeks bevat die de netwerkresource identificeert. Het doel voor neerzetten kan vervolgens de gegevens gebruiken met een van de Windows-netwerken (WNet) API-functies, zoals WNetAddConnection, om netwerkbewerkingen op het object uit te voeren.

CFSTR_PRINTERGROUP

Deze indelings-id wordt gebruikt bij het overbrengen van de beschrijvende namen van printers. De gegevens zijn een STGMEDIUM structuur die een globaal geheugenobject bevat. Het hGlobal lid van de structuur verwijst naar een tekenreeks in dezelfde indeling als die wordt gebruikt met CF_HDROP. De pFiles lid van de DROPFILES structuur bevat echter een of meer beschrijvende namen van printers in plaats van bestandspaden.

CFSTR_INETURL

Deze indelings-id vervangt CFSTR_SHELLURL (afgeschaft). Als u wilt dat uw toepassing klembord-URL's bewerkt, gebruikt u CFSTR_INETURL in plaats van CFSTR_SHELLURL (afgeschaft). Deze indeling biedt de beste klembordweergave van één URL. Als UNICODE niet is gedefinieerd, haalt de toepassing de CF_TEXT/CFSTR_SHELLURL versie van de URL op. Als UNICODE is gedefinieerd, haalt de toepassing de CF_UNICODE versie van de URL op.

CFSTR_SHELLURL (afgeschaft)

Notitie

Deze indelings-id is afgeschaft; gebruik in plaats daarvan CFSTR_INETURL.

 

Indelingen voor communicatie tussen bron en doel

Deze indelings-id's maken communicatie mogelijk tussen bron en doel. De indelingen begeleiden de gegevens en geven toepassingen een grotere mate van controle over verplaatsings-kopieer-plakken- of slepen-en-neerzetten-bewerkingen met betrekking tot Shell-objecten.

CFSTR_INDRAGLOOP

Deze indelings-id wordt gebruikt door een gegevensobject om aan te geven of het zich in een lus voor slepen en neerzetten bevindt. De gegevens zijn een STGMEDIUM structuur die een globaal geheugenobject bevat. De hGlobal--lid van de structuur verwijst naar een DWORD- waarde. Als de DWORD--waarde niet-nul is, bevindt het gegevensobject zich binnen een lus voor slepen en neerzetten. Als de waarde is ingesteld op nul, bevindt het gegevensobject zich niet binnen een lus voor slepen en neerzetten.

Sommige doelen voor neerzetten kunnen IDataObject::GetData aanroepen en proberen gegevens te extraheren terwijl het object zich nog steeds in de lus slepen en neerzetten bevindt. Het volledig weergeven van het object voor elk exemplaar kan ertoe leiden dat de cursor voor slepen vastlopen. Als het gegevensobject ondersteuning biedt voor CFSTR_INDRAGLOOP, kan het doel in plaats daarvan die indeling gebruiken om de status van de lus voor slepen en neerzetten te controleren en geheugenintensieve rendering van het object te voorkomen totdat het daadwerkelijk is verwijderd. De indelingen die geheugenintensief zijn om weer te geven, moeten nog steeds worden opgenomen in de FORMATETC- en in aanroepen naar IDataObject::QueryGetData. Als het gegevensobject geen CFSTR_INDRAGLOOP instelt, moet het fungeren alsof de waarde is ingesteld op nul.

CFSTR_LOGICALPERFORMEDDROPEFFECT

versie 5.0.Met deze indelings-id kan een neerzetbron de IDataObject van het gegevensobject aanroepen::GetData methode om het resultaat van een Shell-gegevensoverdracht te bepalen. De gegevens zijn een STGMEDIUM structuur die een globaal geheugenobject bevat. Het hGlobal lid van de structuur verwijst naar een DWORD met een DROPEFFECT waarde.

De CFSTR_PERFORMEDDROPEFFECT indelings-id was bedoeld om het doel toe te staan aan te geven aan het gegevensobject welke bewerking daadwerkelijk heeft plaatsgevonden. De Shell maakt echter waar mogelijk gebruik van geoptimaliseerde verplaatsingen voor bestandssysteemobjecten. In dat geval stelt de Shell normaal gesproken de CFSTR_PERFORMEDDROPEFFECT waarde in op DROPEFFECT_NONE om aan te geven aan het gegevensobject dat de oorspronkelijke gegevens zijn verwijderd. De bron kan dus niet de CFSTR_PERFORMEDDROPEFFECT-waarde gebruiken om te bepalen welke bewerking heeft plaatsgevonden. Hoewel de meeste bronnen deze informatie niet nodig hebben, zijn er enkele uitzonderingen. Hoewel geoptimaliseerde verplaatsingen bijvoorbeeld de noodzaak voor het verwijderen van gegevens voor een bron elimineren, moet de bron mogelijk nog steeds een gerelateerde database bijwerken om aan te geven dat de bestanden zijn verplaatst of gekopieerd.

Als een bron moet weten welke bewerking heeft plaatsgevonden, kan deze de IDataObject van het gegevensobject aanroepen::GetData methode en de CFSTR_LOGICALPERFORMEDDROPEFFECT-indeling aanvragen. Deze indeling geeft in wezen weer wat er gebeurt vanuit het oogpunt van de gebruiker nadat de bewerking is voltooid. Als er een nieuw bestand wordt gemaakt en het oorspronkelijke bestand wordt verwijderd, ziet de gebruiker een verplaatsingsbewerking en wordt de gegevenswaarde van de indeling ingesteld op DROPEFFECT_MOVE. Als het oorspronkelijke bestand nog steeds aanwezig is, ziet de gebruiker een kopieerbewerking en wordt de gegevenswaarde van de indeling ingesteld op DROPEFFECT_COPY. Als er een koppeling is gemaakt, wordt de gegevenswaarde van de indeling DROPEFFECT_LINK.

CFSTR_PASTESUCCEEDED

Deze indelings-id wordt door het doel gebruikt om het gegevensobject te informeren via de methode IDataObject::SetData, dat een delete-on-paste-bewerking is geslaagd. De gegevens zijn een STGMEDIUM structuur die een globaal geheugenobject bevat. De hGlobal--lid van de structuur verwijst naar een DWORD- met een DROPEFFECT waarde. Deze indeling wordt gebruikt om het gegevensobject op de hoogte te stellen dat het de knipbewerking moet voltooien en de oorspronkelijke gegevens indien nodig moet verwijderen. Zie Bewerkingen verwijderen bij plakkenvoor meer informatie.

CFSTR_PERFORMEDDROPEFFECT

Deze indelings-id wordt door het doel gebruikt om het gegevensobject te informeren via de IDataObject::SetData methode van het resultaat van een gegevensoverdracht. De gegevens zijn een STGMEDIUM structuur die een globaal geheugenobject bevat. De hGlobal lid van de structuur verwijst naar een DWORD- ingesteld op de juiste DROPEFFECT waarde, normaal gesproken DROPEFFECT_MOVE of DROPEFFECT_COPY.

Deze indeling wordt normaal gesproken gebruikt wanneer het resultaat van een bewerking kan worden verplaatst of gekopieerd, zoals in een geoptimaliseerde verplaatsing of delete-on-plakbewerking. Het biedt een betrouwbare manier voor het doel om het gegevensobject te vertellen wat er daadwerkelijk is gebeurd. Deze is geïntroduceerd omdat de waarde van pdwEffect geretourneerd door DoDragDrop- niet betrouwbaar aangeeft welke bewerking heeft plaatsgevonden. De CFSTR_PERFORMEDDROPEFFECT-indeling is de betrouwbare manier om aan te geven dat er een niet-geoptimaliseerde verplaatsing heeft plaatsgevonden.

CFSTR_PREFERREDDROPEFFECT

Deze indelings-id wordt door de bron gebruikt om op te geven of de voorkeursmethode voor gegevensoverdracht wordt verplaatst of gekopieerd. Een neervaldoel vraagt deze indeling aan door de methode IDataObject::GetData van het gegevensobject aan te roepen. De gegevens zijn een STGMEDIUM structuur die een globaal geheugenobject bevat. De hGlobal--lid van de structuur verwijst naar een DWORD- waarde. Deze waarde is ingesteld op DROPEFFECT_MOVE als een verplaatsingsbewerking de voorkeur heeft of DROPEFFECT_COPY als een kopieerbewerking de voorkeur heeft.

Deze functie wordt gebruikt wanneer een bron een verplaatsings- of kopieerbewerking kan ondersteunen. De CFSTR_PREFERREDDROPEFFECT-indeling wordt gebruikt om de voorkeur aan het doel te communiceren. Omdat het doel niet verplicht is om de aanvraag te respecteren, moet het doel de IDataObject::SetData methode aanroepen met een CFSTR_PERFORMEDDROPEFFECT-indeling om aan te geven welk gegevensobject daadwerkelijk is uitgevoerd.

Met een bewerking voor het verwijderen van wordt de CFSTR_PREFERREDDROPFORMAT-indeling gebruikt om het doel te laten weten of de bron een knip- of kopieerbewerking heeft uitgevoerd. Met slepen en neerzetten kunt u CFSTR_PREFERREDDROPFORMAT gebruiken om de actie van de Shell op te geven. Als deze indeling niet aanwezig is, voert de Shell een standaardactie uit op basis van context. Als een gebruiker bijvoorbeeld een bestand van het ene volume sleept en het op een ander volume neerzet, is de standaardactie van de Shell om het bestand te kopiëren. Door een CFSTR_PREFERREDDROPFORMAT-indeling op te nemen in het gegevensobject, kunt u de standaardactie overschrijven en de Shell expliciet laten weten dat het bestand moet worden gekopieerd, verplaatst of gekoppeld. Als de gebruiker ervoor kiest om met de rechterknop te slepen, geeft CFSTR_PREFERREDDROPFORMAT de standaardopdracht op in het snelmenu slepen en neerzetten. De gebruiker is nog steeds vrij om andere opdrachten in het menu te kiezen.

Vóór Microsoft Internet Explorer 4.0 heeft een toepassing aangegeven dat het snelkoppelingsbestandstypen overdraagt door FD_LINKUI in te stellen in de dwFlags lid van de FILEDESCRIPTOR- structuur. Doelen moesten vervolgens een mogelijk tijdrovende aanroep naar IDataObject::GetData- gebruiken om erachter te komen of de FD_LINKUI vlag is ingesteld. De voorkeurswijze om aan te geven dat snelkoppelingen worden overgebracht, is door de CFSTR_PREFERREDDROPEFFECT-indeling te gebruiken die is ingesteld op DROPEFFECT_LINK. Voor achterwaartse compatibiliteit met oudere systemen moeten bronnen echter nog steeds de vlag FD_LINKUI instellen.

CFSTR_TARGETCLSID

Deze indelings-id wordt gebruikt door een doel om de CLSID aan de bron op te geven. De gegevens zijn een STGMEDIUM structuur die een globaal geheugenobject bevat. De hGlobal lid van de structuur verwijst naar de CLSID-GUID van het doel.

Deze indeling wordt voornamelijk gebruikt om objecten te verwijderen door ze naar de Prullenbak te slepen. Wanneer een object in de Prullenbak wordt verwijderd, wordt de methode IDataObject::SetData aangeroepen met een CFSTR_TARGETCLSID-indeling ingesteld op de CLSID van de Prullenbak (CLSID_RecycleBin). De bron kan vervolgens het oorspronkelijke object verwijderen.

CFSTR_UNTRUSTEDDRAGDROP

Deze indelings-id wordt gebruikt door Windows Internet Explorer en de Windows Shell om een mechanisme te bieden waarmee u bewerkingen voor slepen en neerzetten kunt blokkeren of vragen die afkomstig zijn van Internet Explorer in combinatie met de vlag URLACTION_SHELL_ENHANCED_DRAGDROP_SECURITY.

CFSTR_UNTRUSTEDDRAGDROP wordt toegevoegd door de bron van een slepen-en-neerzetten-bewerking om op te geven dat het gegevensobject mogelijk onbetrouwbaar gegevens bevat. De gegevens worden vertegenwoordigd door een STGMEDIUM structuur die een globaal geheugenobject bevat. De hGlobal--lid van de structuur verwijst naar een DWORD- ingesteld op een geschikte URL-actie vlag om een beleidscontrole door te voeren via de methode IInternetSecurityManager::P rocessUrlAction met behulp van de vlag PUAF_ENFORCERESTRICTED.

DragWindow

Deze indeling wordt gebruikt in een slepen-en-neerzetten-bewerking om de afbeelding (venster) van een object te identificeren, zodat de visuele informatie dynamisch kan worden bijgewerkt. Wanneer een object wordt gesleept over een doel voor neerzetten, werkt een toepassing de DROPDESCRIPTION-structuur structuur bij in reactie op de methode IDropTarget::D ragOver of IDropSource::GiveFeedback. De DROPDESCRIPTION- wordt bijgewerkt met een nieuwe DROPIMAGETYPE waarde die aangeeft dat de decoratie moet worden toegepast op de visual van het sleepvenster; Bijvoorbeeld een indicatie dat het bestand wordt gekopieerd in plaats van verplaatst of dat het object niet naar die locatie kan worden verwijderd. Totdat het object echter een DDWM_UPDATEWINDOW bericht ontvangt, worden de visuals niet bijgewerkt. Deze indeling biedt de HWND- van het venster voor het slepen van de geadresseerde naar de afzender van het DDWM_UPDATEWINDOW bericht.

De klembordgegevens zijn van het type TYMED_HGLOBAL. Het is een DWORD weergave van een HWND-. De gegevens kunnen worden doorgegeven aan de ULongToHandle--functie, gedefinieerd in Basetsd.h, om een 64-bits HWND- te bieden voor gebruik in 64-bits Windows.

Deze indeling vereist geen opname van Shlobj.h.