Appunti: utilizzo degli Appunti di Windows

Questo argomento descrive come usare l'API Standard degli Appunti di Windows all'interno dell'applicazione MFC.

La maggior parte delle applicazioni per Windows supporta il taglio o la copia dei dati negli Appunti di Windows e l'incolla dei 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, ovvero Taglia, Copia e Incolla, dal menu Modifica per la visualizzazione. La libreria di classi definisce gli ID comando per questi comandi: ID_EDIT_CUT, ID_EDIT_COPY e ID_EDIT_PASTE. Vengono definiti anche i prompt della riga di messaggio.

Messaggi e comandi nel framework illustrano come gestire i comandi di menu nell'applicazione eseguendo il mapping del comando di menu a una funzione del gestore. Purché l'applicazione non definisca le funzioni del gestore per i comandi degli Appunti nel menu Modifica, rimangono disabilitate. Per scrivere funzioni del gestore per i comandi Taglia e Copia, implementare la selezione nell'applicazione. Per scrivere una funzione del gestore per il comando Incolla, eseguire una query negli Appunti per verificare se contiene dati in un formato che l'applicazione può accettare. Ad esempio, per abilitare 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 devono essere abilitati solo quando viene selezionato un elemento e il comando Incolla solo quando si trova qualcosa negli Appunti. È possibile fornire questo comportamento definendo le funzioni del gestore di aggiornamento che abilitano o disabilitano questi comandi a seconda del contesto. Per altre informazioni, vedere Come aggiornare gli oggetti dell'interfaccia utente.

La libreria di classi Di Microsoft Foundation fornisce il supporto degli Appunti per la modifica del testo con le CEdit classi e CEditView . Le classi OLE semplificano anche l'implementazione di operazioni degli Appunti che coinvolgono elementi OLE. Per altre informazioni sulle classi OLE, vedere Appunti: Uso del meccanismo degli Appunti OLE.

L'implementazione di altri comandi di menu Modifica, ad esempio Annulla (ID_EDIT_UNDO) e Ripeti (ID_EDIT_REDO), viene lasciata anche all'utente. Se l'applicazione non supporta questi comandi, è possibile eliminarli facilmente dal file di risorse usando gli editor di risorse di Visual C++.

Cosa vuoi sapere di più su

Vedi anche

Appunti