Appunti: utilizzo del meccanismo degli Appunti OLE
Per trasferire dati dagli Appunti, la tecnologia OLE fa uso di formati standard e di alcuni formati OLE specifici.
Quando si tagliano o si copiano i dato da un'applicazione, questi vengono archiviati negli Appunti per essere utilizzati in un secondo momento attraverso il comando Incolla. Questi dati sono in diversi formati. Quando un utente sceglie di incollare i dati dagli Appunti, l'applicazione può scegliere quali di questi formati utilizzare. Nell'applicazione deve essere scritto del codice che le consenta di scegliere il formato che fornisce il maggior numero di informazioni, a meno che l'utente non richieda specificamente un determinato formato, utilizzando il comando Incolla speciale. Prima di continuare, è consigliabile leggere gli argomenti Oggetti dati e Origini dati (OLE). In questi argomenti vengono descritti i concetti fondamentali sul funzionamento dei trasferimenti di dati e su come implementarli nelle applicazioni.
In Windows sono definiti numerosi formati standard che possono essere utilizzati per trasferire i dati dagli Appunti. Questi includono metafile, testo, bitmap e altri. Anche in OLE sono definiti vari formati specifici OLE. Per le applicazioni che necessitano di maggiori dettagli rispetto a quelli forniti da questi formati standard, si consiglia di registrare dei formati degli Appunti personalizzati. Usare la funzione API Win32 RegisterClipboardFormat per eseguire questa operazione.
Ad esempio, in Microsoft Excel è registrato un formato personalizzato per i fogli di calcolo. Questo formato racchiude molte più informazioni rispetto, ad esempio, a una bitmap. Quando questi dati vengono incollati in un'applicazione che supporta il formato di foglio di calcolo, tutte le formule e valori presenti nel foglio di calcolo vengono mantenuti e, se necessario, possono essere aggiornati. In Microsoft Excel è inoltre possibile inserire i dati negli Appunti utilizzando formati che possono essere incollati come elementi OLE. Qualsiasi contenitore di documenti OLE può incollare queste informazioni come un elemento incorporato. Questo elemento incorporato può essere modificato utilizzando Microsoft Excel. Gli Appunti contengono inoltre una semplice bitmap dell'immagine dell'intervallo selezionato nel foglio di calcolo. Questa bitmap può essere incollata anche nei contenitori di documenti OLE o negli editor di immagini bitmap, come Paint. Nel caso di una bitmap, tuttavia, non è possibile modificare i dati come in un foglio di calcolo.
Per recuperare più informazioni possibili dagli Appunti, le applicazioni devono controllare questi formati personalizzati prima di incollare i dati dagli Appunti.
Ad esempio, per attivare il comando Taglia, è possibile scrivere un gestore simile al seguente:
void CMyListView::OnEditCut()
{
// Create an OLE data source on the heap
COleDataSource* pData = new COleDataSource;
// Get the currently selected data
HGLOBAL hGlob = GlobalAlloc(GMEM_FIXED, 64);
strcpy_s((char*)hGlob, 64, "Current selection\r\n");
// For the appropriate data formats...
pData->CacheGlobalData( CF_TEXT, hGlob );
// The Clipboard now owns the allocated memory
// and will delete this data object
// when new data is put on the Clipboard
pData->SetClipboard();
}