Formati degli Appunti

Una finestra può posizionare più oggetti negli Appunti, ognuno dei quali rappresenta le stesse informazioni in un formato diverso degli Appunti. Gli utenti non devono essere a conoscenza dei formati degli Appunti usati per un oggetto negli Appunti.

Negli argomenti seguenti vengono descritti i formati degli Appunti.

Formati standard degli Appunti

I formati degli Appunti definiti dal sistema sono denominati formati standard degli Appunti. Questi formati degli Appunti sono descritti in Formati standard degli Appunti.

Formati degli Appunti registrati

Molte applicazioni funzionano con dati che non possono essere convertiti in un formato standard degli Appunti senza perdita di informazioni. Queste applicazioni possono creare formati personalizzati per gli Appunti. Un formato degli Appunti definito da un'applicazione è denominato formato degli Appunti registrato. Ad esempio, se un'applicazione di elaborazione delle parole ha copiato testo formattato negli Appunti usando un formato di testo standard, le informazioni di formattazione andrebbero perse. La soluzione consiste nel registrare un nuovo formato degli Appunti, ad esempio RTF (Rich Text Format).

Per registrare un nuovo formato degli Appunti, utilizzare la funzione RegisterClipboardFormat. Questa funzione accetta il nome del formato e restituisce un valore intero senza segno che rappresenta il formato degli Appunti registrato. Per recuperare il nome del formato degli Appunti registrati, passare il valore intero senza segno alla funzione GetClipboardFormatName.

Se più applicazioni registrano un formato degli Appunti con lo stesso nome, il formato degli Appunti viene registrato una sola volta. Entrambe le chiamate alla funzione RegisterClipboardFormat restituiscono lo stesso valore. In questo modo, due applicazioni diverse possono condividere i dati usando un formato degli Appunti registrato.

Formati degli Appunti privati

Un'applicazione può identificare un formato degli Appunti privati definendo un valore nell'intervallo CF_PRIVATEFIRST tramite CF_PRIVATELAST. Un'applicazione può usare un formato di Appunti privato per un formato di dati definito dall'applicazione che non deve essere registrato con il sistema.

Gli handle di dati associati ai formati degli Appunti privati non vengono liberati automaticamente dal sistema. Se le finestre usano formati privati degli Appunti, è possibile usare il messaggio WM_DESTROYCLIPBOARD per liberare tutte le risorse correlate non più necessarie.

Per altre informazioni sul messaggio di WM_DESTROYCLIPBOARD, vedere Proprietà degli Appunti.

Un'applicazione può inserire handle di dati negli Appunti definendo un formato privato nell'intervallo CF_GDIOBJFIRST tramite CF_GDIOBJLAST. Quando si usano valori in questo intervallo, l'handle dati non è un handle per un oggetto GDI (Windows Graphics Device Interface), ma è un handle allocato dalla funzione GlobalAlloc con il flag GMEM_MOVEABLE. Quando gli Appunti vengono svuotati, il sistema elimina automaticamente l'oggetto usando la funzione GlobalFree.

Formati multipli degli Appunti

Una finestra può posizionare più oggetti Appunti negli Appunti, ognuno dei quali rappresenta le stesse informazioni in un formato diverso degli Appunti. Quando si inserisce informazioni negli Appunti, la finestra deve fornire i dati nel maggior numero possibile di formati. Per scoprire quanti formati sono attualmente usati negli Appunti, chiamare la funzione CountClipboardFormats.

I formati degli Appunti che contengono la maggior parte delle informazioni devono essere inseriti prima negli Appunti, seguiti da formati meno descrittivi. Una finestra che incolla informazioni dagli Appunti recupera in genere un oggetto Appunti nel primo formato riconosciuto. Poiché i formati degli Appunti vengono enumerati nell'ordine in cui vengono inseriti negli Appunti, il primo formato riconosciuto è anche il più descrittivo.

Si supponga, ad esempio, che un utente copia testo con stile da un documento di elaborazione delle parole. La finestra contenente il documento potrebbe prima inserire i dati negli Appunti in un formato registrato, ad esempio RTF. Successivamente, la finestra inserisce i dati negli Appunti in un formato meno descrittivo, ad esempio testo (CF_TEXT).

Quando il contenuto degli Appunti viene incollato in un'altra finestra, la finestra recupera i dati nel formato più descrittivo riconosciuto. Se la finestra riconosce RTF, i dati corrispondenti vengono incollati nel documento. In caso contrario, i dati di testo vengono incollati nel documento e le informazioni di formattazione vengono perse.

Formati sintetizzati degli Appunti

Il sistema converte in modo implicito i dati tra determinati formati degli Appunti: se una finestra richiede dati in un formato diverso dagli Appunti, il sistema converte un formato disponibile nel formato richiesto. Il sistema può convertire i dati come indicato nella tabella seguente.

Formato Appunti Formato conversione
CF_BITMAP CF_DIB
CF_BITMAP CF_DIBV5
CF_DIB CF_BITMAP
CF_DIB CF_PALETTE
CF_DIB CF_DIBV5
CF_DIBV5 CF_BITMAP
CF_DIBV5 CF_DIB
CF_DIBV5 CF_PALETTE
CF_ENHMETAFILE CF_METAFILEPICT
CF_METAFILEPICT CF_ENHMETAFILE
CF_OEMTEXT CF_TEXT
CF_OEMTEXT CF_UNICODETEXT
CF_TEXT CF_OEMTEXT
CF_TEXT CF_UNICODETEXT
CF_UNICODETEXT CF_OEMTEXT
CF_UNICODETEXT CF_TEXT

 

Se il sistema fornisce una conversione automatica dei tipi per un formato specifico degli Appunti, non vi è alcun vantaggio di inserire i formati di conversione negli Appunti.

Se il sistema fornisce una conversione automatica dei tipi per un formato specifico degli Appunti e si chiama EnumClipboardFormats per enumerare i formati di dati degli Appunti, il sistema enumera innanzitutto il formato presente negli Appunti, seguito dai formati in cui può essere convertito.

Quando si copiano bitmap, è consigliabile posizionare il formato CF_DIB o CF_DIBV5 negli Appunti. Questo perché i colori in una bitmap dipendente dal dispositivo (CF_BITMAP) sono relativi alla tavolozza del sistema, che può cambiare prima che la bitmap venga incollata. Se il formato CF_DIB o CF_DIBV5 si trova negli Appunti e una finestra richiede il formato CF_BITMAP , il sistema esegue il rendering della bitmap indipendente dal dispositivo (DIB) usando la tavolozza corrente in quel momento.

Se si posiziona il formato CF_BITMAP negli Appunti (e non CF_DIB), il sistema esegue il rendering del formato CF_DIB o CF_DIBV5 degli Appunti non appena gli Appunti sono chiusi. In questo modo si garantisce che la tavolozza corretta venga usata per generare il DIB. Se si posiziona il formato CF_DIBV5 con le informazioni sullo spazio dei colori bitmap negli Appunti, il sistema convertirà i bit bitmap dallo spazio colore bitmap allo spazio colore sRGB quando viene richiesto CF_DIB o CF_DIBV5 . Se CF_DIBV5 viene richiesto quando non sono presenti informazioni sullo spazio dei colori negli Appunti, il sistema restituisce informazioni sullo spazio dei colori sRGB nella struttura BITMAPV5HEADER. Le conversioni tra altri formati degli Appunti vengono eseguite su richiesta.

Se gli Appunti contengono dati nel formato CF_PALETTE, l'applicazione deve usare le funzioni SelectPalette e RealizePalette per realizzare eventuali altri dati negli Appunti rispetto a tale tavolozza logica.

Esistono due formati degli Appunti per i metafile: CF_ENHMETAFILE e CF_METAFILEPICT. Specificare CF_ENHMETAFILE per metafile avanzati e CF_METAFILEPICT per i metafile di Windows.

Formati della cronologia degli Appunti e degli Appunti cloud

Alcune versioni di Windows includono Cloud Clipboard, che mantiene una cronologia degli elementi di dati degli Appunti recenti e può sincronizzarla tra i dispositivi dell'utente. Se non si vuole che i dati inseriti negli Appunti dell'applicazione vengano inclusi nella cronologia degli Appunti o sincronizzati con altri dispositivi, l'applicazione può controllare questo comportamento inserendo i dati in determinati formati registrati degli Appunti i cui nomi sono noti al sistema Windows:

  • ExcludeClipboardContentFromMonitorProcessing : posizionare tutti i dati negli Appunti in questo formato per impedire che tutti i formati degli Appunti vengano inclusi nella cronologia degli Appunti o sincronizzati con gli altri dispositivi dell'utente.
  • CanIncludeInClipboardHistory: posizionare un valore DWORD serializzato pari a zero negli Appunti in questo formato per impedire l'inclusione di tutti i formati degli Appunti nella cronologia degli Appunti oppure inserire un valore di uno invece per richiedere esplicitamente che l'elemento degli Appunti venga incluso nella cronologia degli Appunti. Ciò non influisce sulla sincronizzazione con gli altri dispositivi dell'utente.
  • CanUploadToCloudClipboard: posizionare un valore DWORD serializzato pari a zero negli Appunti in questo formato per impedire che tutti i formati degli Appunti vengano sincronizzati con gli altri dispositivi dell'utente oppure posizionare un valore di uno invece di richiedere esplicitamente che l'elemento degli Appunti venga sincronizzato con altri dispositivi. Ciò non influisce sulla cronologia degli Appunti del dispositivo locale.

Come per gli altri formati degli Appunti registrati, è necessario usare la funzione RegisterClipboardFormat per ottenere un valore intero senza segno che identifica ognuno dei 3 formati precedenti.