Appunti: copiare e incollare dati
In questo argomento viene descritto il lavoro minimo necessario per implementare la copia negli Appunti e incollarlo dagli Appunti nell'applicazione OLE. Prima di procedere, è consigliabile leggere gli argomenti Oggetti dati e Origini dati (OLE ).
Prima di poter implementare la copia o incolla, è necessario fornire le funzioni per gestire le opzioni Copia, Taglia e Incolla dal menu Modifica.
Copia o taglio di dati
Per copiare i dati negli Appunti
Determinare se i dati da copiare sono dati nativi o è un elemento incorporato o collegato.
Se i dati sono incorporati o collegati, ottenere un puntatore all'oggetto
COleClientItem
selezionato.Se i dati sono nativi e l'applicazione è un server, creare un nuovo oggetto derivato da
COleServerItem
contenente i dati selezionati. In caso contrario, creare unCOleDataSource
oggetto per i dati.
Chiamare la funzione membro dell'elemento
CopyToClipboard
selezionato.Se l'utente ha scelto un'operazione Taglia anziché un'operazione di copia, eliminare i dati selezionati dall'applicazione.
Per un esempio di questa sequenza, vedere le OnEditCut
funzioni e OnEditCopy
nei programmi di esempio OLE MFC OCLIENT e HIERSVR. Si noti che questi esempi mantengono un puntatore ai dati attualmente selezionati, quindi il passaggio 1 è già completo.
Incolla dei dati
Incollare i dati è più complicato rispetto alla copia perché è necessario scegliere il formato da usare incollare i dati nell'applicazione.
Per incollare dati dagli Appunti
Nella classe di visualizzazione implementare
OnEditPaste
per gestire gli utenti che scelgono l'opzione Incolla dal menu Modifica.OnEditPaste
Nella funzione creare unCOleDataObject
oggetto e chiamare la relativaAttachClipboard
funzione membro per collegare questo oggetto ai dati negli Appunti.Chiamare
COleDataObject::IsDataAvailable
per verificare se è disponibile un formato specifico.In alternativa, è possibile usare
COleDataObject::BeginEnumFormats
per cercare altri formati finché non si trova una più adatta all'applicazione.Eseguire l'incolla del formato.
Per un esempio del funzionamento, vedere l'implementazione delle OnEditPaste
funzioni membro nelle classi di visualizzazione definite nei programmi di esempio OLE MFC OCLIENT e HIERSVR.
Suggerimento
Il vantaggio principale della separazione dell'operazione incolla nella propria funzione è che lo stesso codice incolla può essere usato quando i dati vengono rilasciati nell'applicazione durante un'operazione di trascinamento della selezione. Come in OCLIENT e HIERSVR, la OnDrop
funzione può anche chiamare DoPasteItem
, riutilizzando il codice scritto per implementare le operazioni Incolla.
Per gestire l'opzione Incolla speciale nel menu Modifica, vedere l'argomento Finestre di dialogo in OLE.