Condividi tramite


Appunti: utilizzo degli Appunti di Windows

In questo argomento viene descritto come utilizzare lo standard Windows Clipboard API in un'applicazione MFC.

La maggior parte delle applicazioni per Windows supporta le operazioni di taglia o copia di dati negli Appunti di Windows e l'operazione di incolla dati dagli Appunti. I formati di dati degli Appunti variano tra le applicazioni. Il framework supporta solo un numero limitato di formati degli Appunti per un numero limitato di classi. In genere si implementeranno i comandi correlati agli Appunti — Taglia, Copia e Incolla — nel menu Modifica per la vista. La libreria di classi definisce gli ID di comando per questi comandi: ID_EDIT_CUT, ID_EDIT_COPY e ID_EDIT_PASTE. Vengono anche definiti i suggerimenti della linea dei messaggi.

Messaggi e controlli in Framework viene illustrato come gestire i comandi di menu nell'applicazione eseguendo il mapping del comando di menu a una funzione di gestione. Finché l'applicazione non definisce le funzioni di gestione degli Appunti nel menu Modifica, restano disattivate. Per scrivere funzioni di gestione per i comandi Taglia e Copia, implementare la selezione nell'applicazione. Per scrivere una funzione di gestione per il comando Incolla, eseguire una query agli Appunti per verificare se contengono dati in un formato che l'applicazione può accettare. Ad esempio, per attivare il comando Copia, è possibile scrivere un gestore simile al seguente:

void CMyListView::OnEditCopy()
{
   if ( !OpenClipboard() )
   {
      AfxMessageBox( _T("Cannot open the Clipboard") );
      return;
   }
   // Remove the current Clipboard contents 
   if( !EmptyClipboard() )
   {
      AfxMessageBox( _T("Cannot empty the Clipboard") );
      return;
   }
   // 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... 
   if ( ::SetClipboardData( CF_TEXT, hGlob ) == NULL )
   {
      CString msg;
      msg.Format(_T("Unable to set Clipboard data, error: %d"), GetLastError());
      AfxMessageBox( msg );
      CloseClipboard();
      GlobalFree(hGlob);
      return;
   }
   CloseClipboard();
}

I comandi Taglia, Copia e Incolla sono significativi solo in determinati contesti. I comandi Taglia e Copia dovrebbero essere abilitati solo quando viene selezionato un elemento, mentre il comando Incolla solo quando è presente qualcosa negli Appunti. È possibile fornire questo comportamento definendo le funzioni del gestore aggiornamento che abilitano o disabilitano questi controlli in base al contesto. Per ulteriori informazioni, vedere Come aggiornare gli oggetti dell'interfaccia utente.

La libreria MFC fornisce supporto per gli Appunti per modifica di testo con le classi CEditView e CEdit. Le classi OLE semplificano inoltre l'implementazione delle operazioni degli Appunti che includono elementi OLE. Per ulteriori informazioni sulle classi OLE, vedere Appunti: Utilizzare il meccanismo di Appunti OLE.

Implementare altri comandi del menu Modifica, ad esempio Annulla (ID_EDIT_UNDO) e Ripristina (ID_EDIT_REDO), viene lasciato allo sviluppatore. Se l'applicazione non supporta questi controlli, è possibile eliminarli dal file di risorse utilizzando gli editor di risorse di Visual C++.

Scegliere l'argomento su cui visualizzare maggiori informazioni

Vedere anche

Concetti

Appunti