Condividi tramite


Formati degli Appunti della shell

I formati degli Appunti della shell vengono usati per identificare il tipo di dati shell trasferiti negli Appunti. La maggior parte dei formati degli Appunti shell identifica un tipo di dati, ad esempio un elenco di nomi di file o puntatori agli elenchi di identificatori di elemento (PIDL). Tuttavia, alcuni formati vengono usati per la comunicazione tra origine e destinazione. Possono accelerare il processo di trasferimento dei dati supportando operazioni shell come lo spostamento ottimizzato e la delete_on_paste. I dati della shell sono sempre contenuti in un oggetto dati che usa una struttura FORMATETC come modo più generale per caratterizzare i dati. Il membro cfFormat della struttura è impostato sul formato degli Appunti per l'elemento specifico dei dati. Gli altri membri forniscono informazioni aggiuntive, ad esempio il meccanismo di trasferimento dei dati. I dati sono contenuti in una struttura STGMEDIUM associata.

Nota

Gli identificatori di formato degli Appunti standard hanno il modulo CF_XXX. Un esempio comune è CF_TEXT, usato per il trasferimento di dati di testo ANSI. Questi identificatori hanno valori predefiniti e possono essere usati direttamente con strutture FORMATETC . Ad eccezione di CF_HDROP, gli identificatori di formato shell non sono predefiniti. Ad eccezione di DragWindow, hanno il modulo CFSTR_XXX. Per differenziare questi valori dai formati predefiniti, vengono spesso definiti semplicemente formati. Tuttavia, a differenza dei formati predefiniti, devono essere registrati sia dall'origine che dalla destinazione prima che possano essere usati per trasferire i dati. Per registrare un formato shell , includere il file di intestazione Shlobj.h e passare l'identificatore di formato CFSTR_XXX a RegisterClipboardFormat. Questa funzione restituisce un valore di formato degli Appunti valido, che può quindi essere usato come membro cfFormat di una struttura FORMATETC .

 

I formati degli Appunti di Shell sono organizzati qui in tre gruppi, in base alla modalità di utilizzo.

Formati per il trasferimento di oggetti file system

Questi formati vengono usati per trasferire uno o più file o altri oggetti Shell.

CF_HDROP

Questo formato degli Appunti viene usato durante il trasferimento dei percorsi di un gruppo di file esistenti. A differenza degli altri formati shell, è predefinito, quindi non è necessario chiamare RegisterClipboardFormat. I dati sono costituiti da una struttura STGMEDIUM che contiene un oggetto di memoria globale. Il membro hGlobal della struttura punta a una struttura DROPFILES come membro hGlobal .

Il membro pFiles della struttura DROPFILES contiene un offset in una matrice di caratteri con terminazione null doppia che contiene i nomi di file. Se si estrae un formato CF_HDROP da un oggetto dati, è possibile usare DragQueryFile per estrarre singoli nomi di file dall'oggetto memoria globale. Se si sta creando un formato CF_HDROP da inserire in un oggetto dati, sarà necessario costruire la matrice di nomi file.

La matrice di nomi file è costituita da una serie di stringhe, ognuna contenente il percorso completo di un file, incluso il carattere NULL terminante. Un carattere Null aggiuntivo viene aggiunto alla stringa finale per terminare la matrice. Ad esempio, se i file c:\temp1.txt e c:\temp2.txt vengono trasferiti, la matrice di caratteri è simile alla seguente:

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

Nota

In questo esempio viene usato '\0' per rappresentare il carattere Null , non i caratteri letterali che devono essere inclusi.

Se l'oggetto è stato copiato negli Appunti come parte di un'operazione di trascinamento e rilascio, il membro pt della struttura DROPFILES contiene le coordinate del punto in cui è stato eliminato l'oggetto. È possibile usare DragQueryPoint per estrarre le coordinate del cursore.

Se questo formato è presente in un oggetto dati, un ciclo di trascinamento OLE simula WM_DROPFILES funzionalità con destinazioni di rilascio non OLE. Questo è importante se l'applicazione è l'origine di un'operazione di trascinamento della selezione in un sistema Windows 3.1.

CFSTR_FILECONTENTS

Questo identificatore di formato viene usato con il formato CFSTR_FILEDESCRIPTOR per trasferire i dati come se fosse un file, indipendentemente dalla modalità di archiviazione effettiva. I dati sono costituiti da una struttura STGMEDIUM che rappresenta il contenuto di un file. Il file viene normalmente rappresentato come oggetto di flusso, che evita di dover inserire il contenuto del file in memoria. In tal caso, il membro tymed della struttura STGMEDIUM è impostato su TYMED_ISTREAM e il file è rappresentato da un'interfaccia IStream . Il file può anche essere un oggetto di archiviazione o memoria globale (TYMED_ISTORAGE o TYMED_HGLOBAL). Il formato CFSTR_FILEDESCRIPTOR associato contiene una struttura FILEDESCRIPTOR per ogni file che specifica il nome e gli attributi del file.

La destinazione tratta i dati associati a un formato CFSTR_FILECONTENTS come se fosse un file. Quando la destinazione chiama IDataObject::GetData per estrarre i dati, specifica un file specifico impostando il membro lindex della struttura FORMATETC sull'indice in base zero della struttura FILEDESCRIPTOR del file nel formato di CFSTR_FILEDESCRIPTOR che accompagna. La destinazione usa quindi il puntatore dell'interfaccia restituito o l'handle di memoria globale per estrarre i dati.

CFSTR_FILEDESCRIPTOR

Questo identificatore di formato viene usato con il formato CFSTR_FILECONTENTS per trasferire i dati come gruppo di file. Questi due formati sono il modo preferito per trasferire oggetti Shell che non vengono archiviati come file di file system. Ad esempio, questi formati possono essere usati per trasferire un gruppo di messaggi di posta elettronica come singoli file, anche se ogni messaggio di posta elettronica viene effettivamente archiviato come blocco di dati in un database. I dati sono costituiti da una struttura STGMEDIUM che contiene un oggetto di memoria globale. Il membro hGlobal della struttura punta a una struttura FILEGROUPDESCRIPTOR seguita da una matrice contenente una struttura FILEDESCRIPTOR per ogni file del gruppo. Per ogni struttura FILEDESCRIPTOR , esiste un formato CFSTR_FILECONTENTS separato che contiene il contenuto del file. Per identificare il formato di CFSTR_FILECONTENTS di un determinato file, impostare il valore lIndex della struttura FORMATETC sull'indice in base zero della struttura FILEDESCRIPTOR del file.

Il formato CFSTR_FILEDESCRIPTOR viene comunemente usato per trasferire i dati come se fosse un gruppo di file, indipendentemente dalla modalità di archiviazione effettiva. Dal punto di vista della destinazione, ogni formato CFSTR_FILECONTENTS rappresenta un singolo file e viene trattato di conseguenza. Tuttavia, l'origine può archiviare i dati in qualsiasi modo scelto. Anche se un formato CSFTR_FILECONTENTS potrebbe corrispondere a un singolo file, può anche rappresentare i dati estratti dall'origine da un database o da un documento di testo.

CFSTR_FILENAME

Questo identificatore di formato viene usato per trasferire un singolo file. I dati sono costituiti da una struttura STGMEDIUM che contiene un oggetto di memoria globale. Il membro hGlobal della struttura punta a una singola stringa con terminazione null contenente il percorso di file completo del file. Questo formato è stato sostituito da CF_HDROP, ma è supportato per la compatibilità con le versioni precedenti con le applicazioni Windows 3.1.

CFSTR_FILENAMEMAP

Questo identificatore di formato viene usato quando un gruppo di file in formato CF_HDROP viene rinominato e trasferito. I dati sono costituiti da una struttura STGMEDIUM che contiene un oggetto di memoria globale. Il membro hGlobal della struttura punta a una matrice di caratteri con terminazione null doppia. Questa matrice contiene un nuovo nome per ogni file, nello stesso ordine in cui i file sono elencati nel formato di CF_HDROP adiacente. Il formato della matrice di caratteri è uguale a quello usato da CF_HDROP per elencare i file trasferiti.

CFSTR_MOUNTEDVOLUME

Questo identificatore di formato viene usato per trasferire un percorso in un volume montato. È simile a CF_HDROP, ma contiene solo un singolo percorso e può gestire le stringhe di percorso più lunghe che potrebbero essere necessarie per rappresentare un percorso quando il volume viene montato in una cartella. I dati sono costituiti da una struttura STGMEDIUM che contiene un oggetto di memoria globale. Il membro hGlobal della struttura punta a una singola stringa con terminazione null contenente il percorso del file completo. La stringa di percorso deve terminare con un carattere '\', seguito dalla terminazione NULL.

Prima di Windows 2000, i volumi potrebbero essere montati solo sulle lettere di unità. Per i sistemi Windows 2000 e versioni successive con un'unità formattata NTFS, è anche possibile montare volumi in cartelle vuote. Questa funzionalità consente di montare un volume senza richiedere una lettera di unità. Il volume montato può usare qualsiasi formato attualmente supportato, tra cui FAT, FAT32, NTFS e CDFS.

È possibile aggiungere pagine a un foglio proprietà Proprietà unità implementando un gestore del foglio delle proprietà. Se il volume viene montato su una lettera di unità, shell passa le informazioni sul percorso al gestore con il formato CF_HDROP . Con i sistemi Windows 2000 e versioni successive, il formato CF_HDROP viene usato quando un volume viene montato su una lettera di unità, esattamente come con i sistemi precedenti. Tuttavia, se un volume viene montato in una cartella, viene usato l'identificatore di formato CFSTR_MOUNTEDVOLUME anziché CF_HDROP.

Se vengono usate solo lettere di unità per montare volumi, verranno usate solo CF_HDROP e i gestori di fogli di proprietà esistenti funzioneranno come funzionano con i sistemi precedenti. Tuttavia, se si vuole che il gestore visualizzi una pagina per volumi montati su cartelle e lettere di unità, il gestore deve essere in grado di comprendere sia i formati di CSFTR_MOUNTEDVOLUME che di CF_HDROP.

CFSTR_SHELLIDLIST

Questo identificatore di formato viene usato durante il trasferimento dei percorsi di uno o più oggetti dello spazio dei nomi esistenti. Viene usato in modo molto simile a CF_HDROP, ma contiene PIDLs anziché percorsi del file system. L'uso di PIDL consente al formato di CFSTR_SHELLIDLIST di gestire oggetti virtuali e file system. I dati sono una struttura STGMEDIUM che contiene un oggetto memoria globale. Il membro hGlobal della struttura punta a una struttura CIDA .

Il membro aoffset della struttura CIDA è una matrice contenente offset all'inizio della struttura ITEMIDLIST per ogni PIDL in corso di trasferimento. Per estrarre un determinato PIDL, determinare prima di tutto il relativo indice. Aggiungere quindi il valore aoffset corrispondente a tale indice all'indirizzo della struttura CIDA .

Il primo elemento di aoffset contiene un offset per il PIDL completo di una cartella padre. Se questo PIDL è vuoto, la cartella padre è il desktop. Ognuno degli elementi rimanenti della matrice contiene un offset a uno dei PIDL da trasferire. Tutti questi PIDL sono relativi al PIDL della cartella padre.

Le due macro seguenti possono essere usate per recuperare i PIDL da una struttura CIDA . Il primo accetta un puntatore alla struttura e recupera il PIDL della cartella padre. Il secondo accetta un puntatore alla struttura e recupera uno degli altri PIDL, identificati dal relativo indice in base zero.

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

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

Nota

Il valore restituito da queste macro è un puntatore alla struttura ITEMIDLIST di PIDL. Poiché queste strutture variano in lunghezza, è necessario determinare la fine della struttura passando attraverso ognuna delle strutture SHITEMID della struttura ITEMIDLIST fino a raggiungere il valore NULL a due byte che contrassegna la fine.

CFSTR_SHELLIDLISTOFFSET

Questo identificatore di formato viene usato con formati come CF_HDROP, CFSTR_SHELLIDLIST e CFSTR_FILECONTENTS per specificare la posizione di un gruppo di oggetti che seguono un trasferimento. I dati sono costituiti da una struttura STGMEDIUM che contiene un oggetto di memoria globale. Il membro hGlobal della struttura punta a una matrice di strutture POINT . La prima struttura specifica le coordinate dello schermo, in pixel, dell'angolo superiore sinistro del rettangolo che racchiude il gruppo. Il resto delle strutture specifica le posizioni dei singoli oggetti rispetto alla posizione del gruppo. Devono essere nello stesso ordine usato per elencare gli oggetti nel formato associato.

Formati per il trasferimento di oggetti virtuali

Il formato CFSTR_SHELLIDLIST può essere usato per trasferire sia file system che oggetti virtuali. Esistono tuttavia anche diversi formati specializzati per il trasferimento di tipi specifici di oggetti virtuali.

CFSTR_NETRESOURCES

Questo identificatore di formato viene usato durante il trasferimento di risorse di rete, ad esempio un dominio o un server. I dati sono una struttura STGMEDIUM che contiene un oggetto memoria globale. Il membro hGlobal della struttura punta a una struttura NRESARRAY . Il membro nr di tale struttura indica una struttura NETRESOURCE il cui membro lpRemoteName contiene una stringa con terminazione null che identifica la risorsa di rete. La destinazione di rilascio può quindi usare i dati con una delle funzioni API di Rete Windows (WNet), ad esempio WNetAddConnection, per eseguire operazioni di rete sull'oggetto.

CFSTR_PRINTERGROUP

Questo identificatore di formato viene usato durante il trasferimento dei nomi descrittivi delle stampanti. I dati sono una struttura STGMEDIUM che contiene un oggetto memoria globale. Il membro hGlobal della struttura punta a una stringa nello stesso formato usato con CF_HDROP. Tuttavia, il membro pFiles della struttura DROPFILES contiene uno o più nomi descrittivi delle stampanti anziché percorsi di file.

CFSTR_INETURL

Questo identificatore di formato sostituisce CFSTR_SHELLURL (deprecato). Per modificare gli URL degli Appunti, usare CFSTR_INETURL anziché CFSTR_SHELLURL (deprecato). Questo formato offre la rappresentazione migliore degli Appunti di un singolo URL. Se UNICODE non è definito, l'applicazione recupera la versione CF_TEXT/CFSTR_SHELLURL dell'URL. Se UNICODE è definito, l'applicazione recupera la versione CF_UNICODE dell'URL.

CFSTR_SHELLURL (deprecato)

Nota

Questo identificatore di formato è stato deprecato; usare CFSTR_INETURL invece.

 

Formati per la comunicazione tra origine e destinazione

Questi identificatori di formato consentono la comunicazione tra origine e destinazione. I formati accompagnano i dati e offrono alle applicazioni un maggiore grado di controllo sulle operazioni move-copy-paste o drag-and-drop che coinvolgono oggetti Shell.

CFSTR_INDRAGLOOP

Questo identificatore di formato viene usato da un oggetto dati per indicare se si trova in un ciclo di trascinamento. I dati sono una struttura STGMEDIUM che contiene un oggetto memoria globale. Il membro hGlobal della struttura punta a un valore DWORD . Se il valore DWORD è diverso da zero, l'oggetto dati si trova all'interno di un ciclo di trascinamento. Se il valore è impostato su zero, l'oggetto dati non si trova all'interno di un ciclo di trascinamento.

Alcune destinazioni di eliminazione potrebbero chiamare IDataObject::GetData e tentare di estrarre i dati mentre l'oggetto è ancora all'interno del ciclo di trascinamento. Il rendering completo dell'oggetto per ogni occorrenza potrebbe causare lo stallo del cursore di trascinamento. Se l'oggetto dati supporta CFSTR_INDRAGLOOP, la destinazione può invece usare tale formato per controllare lo stato del ciclo di trascinamento ed eliminazione ed evitare il rendering intensivo della memoria dell'oggetto finché non viene effettivamente eliminato. I formati con utilizzo elevato di memoria per il rendering devono comunque essere inclusi nell'enumeratore FORMATETC e nelle chiamate a IDataObject::QueryGetData. Se l'oggetto dati non è impostato CFSTR_INDRAGLOOP, deve agire come se il valore sia impostato su zero.

CFSTR_LOGICALPERFORMEDDROPEFFECT

Versione 5.0. Questo identificatore di formato consente a un'origine di rilascio di chiamare il metodo IDataObject::GetData dell'oggetto dati per determinare il risultato di un trasferimento dati shell. I dati sono una struttura STGMEDIUM che contiene un oggetto memoria globale. Il membro hGlobal della struttura punta a un DWORD contenente un valore DROPEFFECT .

L'identificatore di formato CFSTR_PERFORMEDDROPEFFECT è stato progettato per consentire alla destinazione di indicare all'oggetto dati l'operazione effettivamente eseguita. Tuttavia, shell usa spostamenti ottimizzati per gli oggetti del file system, quando possibile. In tal caso, shell imposta in genere il valore CFSTR_PERFORMEDDROPEFFECT su DROPEFFECT_NONE, per indicare all'oggetto dati che i dati originali sono stati eliminati. Pertanto, l'origine non può utilizzare il valore CFSTR_PERFORMEDDROPEFFECT per determinare quale operazione è stata eseguita. Sebbene la maggior parte delle origini non richieda queste informazioni, esistono alcune eccezioni. Ad esempio, anche se gli spostamenti ottimizzati eliminano la necessità di eliminare dati da un'origine, l'origine potrebbe comunque dover aggiornare un database correlato per indicare che i file sono stati spostati o copiati.

Se un'origine deve sapere quale operazione ha avuto luogo, può chiamare il metodo IDataObject::GetData Dell'oggetto dati e richiedere il formato di CFSTR_LOGICALPERFORMEDDROPEFFECT. Questo formato riflette essenzialmente ciò che accade dal punto di vista dell'utente al termine dell'operazione. Se viene creato un nuovo file e il file originale viene eliminato, l'utente vede un'operazione di spostamento e il valore dei dati del formato è impostato su DROPEFFECT_MOVE. Se il file originale è ancora presente, l'utente vede un'operazione di copia e il valore dei dati del formato è impostato su DROPEFFECT_COPY. Se è stato creato un collegamento, il valore dei dati del formato verrà DROPEFFECT_LINK.

CFSTR_PASTESUCCEEDED

Questo identificatore di formato viene utilizzato dalla destinazione per informare l'oggetto dati, tramite il relativo metodo IDataObject::SetData , che un'operazione delete-on-paste ha avuto esito positivo. I dati sono una struttura STGMEDIUM che contiene un oggetto memoria globale. Il membro hGlobal della struttura punta a un DWORD contenente un valore DROPEFFECT . Questo formato viene utilizzato per notificare all'oggetto dati che deve completare l'operazione di taglio ed eliminare i dati originali, se necessario. Per altre informazioni, vedere Operazioni di eliminazione su incolla.

CFSTR_PERFORMEDDROPEFFECT

Questo identificatore di formato viene utilizzato dalla destinazione per informare l'oggetto dati tramite il metodo IDataObject::SetData del risultato di un trasferimento dati. I dati sono una struttura STGMEDIUM che contiene un oggetto memoria globale. Il membro hGlobal della struttura punta a un DWORD impostato sul valore DROPEFFECT appropriato, in genere DROPEFFECT_MOVE o DROPEFFECT_COPY.

Questo formato viene in genere usato quando il risultato di un'operazione può essere spostato o copiato, ad esempio in un'operazione di spostamento o di eliminazione ottimizzata . Fornisce un modo affidabile per indicare all'oggetto dati che cosa è accaduto effettivamente. È stato introdotto perché il valore di pdwEffect restituito da DoDragDrop non indicava in modo affidabile quale operazione aveva avuto luogo. Il formato CFSTR_PERFORMEDDROPEFFECT è il modo affidabile per indicare che è stato eseguito uno spostamento non ottimizzato.

CFSTR_PREFERREDDROPEFFECT

Questo identificatore di formato viene utilizzato dall'origine per specificare se il metodo preferito per il trasferimento dei dati è lo spostamento o la copia. Una destinazione di rilascio richiede questo formato chiamando il metodo IDataObject::GetData dell'oggetto dati. I dati sono una struttura STGMEDIUM che contiene un oggetto memoria globale. Il membro hGlobal della struttura punta a un valore DWORD . Questo valore è impostato su DROPEFFECT_MOVE se è preferibile un'operazione di spostamento o DROPEFFECT_COPY se si preferisce un'operazione di copia.

Questa funzionalità viene usata quando un'origine può supportare un'operazione di spostamento o copia. Usa il formato CFSTR_PREFERREDDROPEFFECT per comunicare la preferenza alla destinazione. Poiché la destinazione non è obbligata a rispettare la richiesta, la destinazione deve chiamare il metodo IDataObject::SetData dell'origine con un formato CFSTR_PERFORMEDDROPEFFECT per indicare all'oggetto dati quale operazione è stata effettivamente eseguita.

Con un'operazione di eliminazione su incolla , il formato CFSTR_PREFERREDDROPFORMAT viene usato per indicare alla destinazione se l'origine ha eseguito un taglio o una copia. Con un'operazione di trascinamento della selezione, è possibile usare CFSTR_PREFERREDDROPFORMAT per specificare l'azione della shell. Se questo formato non è presente, shell esegue un'azione predefinita, in base al contesto. Ad esempio, se un utente trascina un file da un volume e lo rilascia in un altro volume, l'azione predefinita della shell consiste nel copiare il file. Includendo un formato CFSTR_PREFERREDDROPFORMAT nell'oggetto dati, è possibile eseguire l'override dell'azione predefinita e indicare in modo esplicito a Shell di copiare, spostare o collegare il file. Se l'utente sceglie di trascinare con il pulsante destro, CFSTR_PREFERREDDROPFORMAT specifica il comando predefinito nel menu di scelta rapida di trascinamento della selezione . L'utente è comunque libero di scegliere altri comandi nel menu.

Prima di Microsoft Internet Explorer 4.0, un'applicazione indica che stava trasferendo i tipi di file di collegamento impostando FD_LINKUI nel membro dwFlags della struttura FILEDESCRIPTOR . Le destinazioni dovevano quindi usare una chiamata potenzialmente dispendiosa in termini di tempo a IDataObject::GetData per verificare se il flag FD_LINKUI è stato impostato. A questo punto, il modo preferito per indicare che i collegamenti vengono trasferiti consiste nell'usare il formato di CFSTR_PREFERREDDROPEFFECT impostato su DROPEFFECT_LINK. Tuttavia, per la compatibilità con le versioni precedenti con i sistemi precedenti, le origini devono comunque impostare il flag di FD_LINKUI.

CFSTR_TARGETCLSID

Questo identificatore di formato viene usato da una destinazione per fornire il relativo CLSID all'origine. I dati sono una struttura STGMEDIUM che contiene un oggetto memoria globale. Il membro hGlobal della struttura punta al GUID CLSID della destinazione di rilascio.

Questo formato viene usato principalmente per consentire l'eliminazione degli oggetti trascinandoli nel Cestino. Quando un oggetto viene eliminato nel Cestino, il metodo IDataObject::SetData di origine viene chiamato con un formato CFSTR_TARGETCLSID impostato sul CLSID del Cestino (CLSID_RecycleBin). L'origine può quindi eliminare l'oggetto originale.

CFSTR_UNTRUSTEDDRAGDROP

Questo identificatore di formato viene usato da Windows Internet Explorer e da Windows Shell per fornire un meccanismo tramite il quale bloccare o richiedere operazioni di trascinamento della selezione provenienti da Internet Explorer insieme al flag URLACTION_SHELL_ENHANCED_DRAGDROP_SECURITY .

CFSTR_UNTRUSTEDDRAGDROP viene aggiunto dall'origine di un'operazione di trascinamento della selezione per specificare che l'oggetto dati potrebbe contenere dati non attendibili. I dati sono rappresentati da una struttura STGMEDIUM che contiene un oggetto memoria globale. Il membro hGlobal della struttura punta a un DWORD impostato su un flag di azione URL appropriato per generare un controllo dei criteri tramite il metodo IInternetSecurityManager::P rocessUrlAction , usando il flag PUAF_ENFORCERESTRICTED .

TrascinareWindow

Questo formato viene usato in un'operazione di trascinamento della selezione per identificare l'immagine di trascinamento di un oggetto (finestra) in modo che le informazioni visive possano essere aggiornate dinamicamente. Quando un oggetto viene trascinato su una destinazione di rilascio, un'applicazione aggiorna la struttura DROPDESCRIPTION in risposta al metodo IDropTarget::D ragOver o IDropSource::GiveFeedback . DROPDESCRIPTION viene aggiornato con un nuovo valore DROPIMAGETYPE che indica la decorazione da applicare all'oggetto visivo della finestra di trascinamento; Ad esempio, un'indicazione che il file viene copiato anziché spostato o che l'oggetto non può essere eliminato in tale posizione. Tuttavia, finché l'oggetto non riceve un messaggio di DDWM_UPDATEWINDOW , gli oggetti visivi non vengono aggiornati. Questo formato fornisce il valore HWND della finestra di trascinamento del destinatario al mittente del messaggio DDWM_UPDATEWINDOW .

I dati degli Appunti sono di tipo TYMED_HGLOBAL. Si tratta di una rappresentazione DWORD di un HWND. I dati possono essere passati alla funzione ULongToHandle , definita in Basetsd.h, per fornire un HWND a 64 bit da usare in Windows a 64 bit.

Questo formato non richiede l'inclusione di Shlobj.h.