Trascinamento della selezione OLE
La funzionalità di trascinamento della selezione di OLE è principalmente un collegamento per copiare e incollare i dati. Quando si usano gli Appunti per copiare o incollare i dati, sono necessari alcuni passaggi. Selezionare i dati e scegliere Taglia o Copia dal menu Modifica . Passare quindi all'app o alla finestra di destinazione e posizionare il cursore nella posizione di destinazione. Infine, scegliere Modifica>incolla dal menu.
La funzionalità di trascinamento della selezione OLE è diversa dal meccanismo di trascinamento della selezione di Gestione file. Gestione file può gestire solo i nomi file ed è progettato in modo specifico per passare nomi file alle applicazioni. Il trascinamento della selezione in OLE è molto più generale. Consente di trascinare e rilasciare tutti i dati che possono essere posizionati anche negli Appunti.
Quando si usa il trascinamento della selezione OLE, rimuovere due passaggi dal processo. Selezionare i dati dalla finestra di origine (l'origine di rilascio), quindi trascinarli nella destinazione (la "destinazione di rilascio"). La si rilascia rilasciando il pulsante del mouse. L'operazione elimina la necessità di menu ed è più veloce rispetto alla sequenza di copia/incolla. Esiste un solo requisito: sia l'origine di rilascio che la destinazione di rilascio devono essere aperte e almeno parzialmente visibili sullo schermo.
Usando il trascinamento della selezione OLE, i dati possono essere trasferiti facilmente da una posizione all'altra: all'interno di un documento, tra documenti diversi o tra applicazioni. Può essere implementato in un contenitore o in un'applicazione server. Qualsiasi applicazione può essere un'origine di rilascio, una destinazione di rilascio o entrambi. Se un'applicazione implementa sia il supporto per l'origine di rilascio che la destinazione di rilascio, è possibile trascinare e rilasciare tra finestre figlio o all'interno di una finestra. Questa funzionalità semplifica notevolmente l'uso dell'applicazione.
Gli articoli Oggetti dati e origini dati (OLE) illustrano come implementare il trasferimento dei dati nelle applicazioni. È anche utile esaminare gli esempi OLE MFC OCLIENT e HIERSVR.
Implementare un'origine di rilascio
Per ottenere l'applicazione per fornire dati a un'operazione di trascinamento della selezione, implementare un'origine di rilascio. L'implementazione di base di un'origine di rilascio è relativamente semplice. Il primo passaggio consiste nel determinare quali eventi iniziano un'operazione di trascinamento. Le linee guida dell'interfaccia utente consigliate definiscono l'inizio di un'operazione di trascinamento come quando si verifica un evento WM_LBUTTONDOWN in un punto all'interno di alcuni dati selezionati. Gli esempi OLE MFC OCLIENT e HIERSVR seguono queste linee guida.
Se l'applicazione è un contenitore e i dati selezionati sono collegati o un oggetto incorporato di tipo COleClientItem
, chiamare la relativa DoDragDrop
funzione membro. In caso contrario, costruire un COleDataSource
oggetto, inizializzarlo con la selezione e chiamare la funzione membro dell'oggetto DoDragDrop
origine dati. Se l'applicazione è un server, usare COleServerItem::DoDragDrop
. Per informazioni sulla personalizzazione del comportamento standard di trascinamento della selezione, vedere la sezione Personalizzare il trascinamento della selezione.
Se DoDragDrop
restituisce DROPEFFECT_MOVE, eliminare immediatamente i dati di origine dal documento di origine. Nessun altro valore restituito da DoDragDrop
ha alcun effetto su un'origine di rilascio.
Per altre informazioni, vedere Oggetti dati OLE e origini dati: Creazione e distruzione e oggetti dati OLE e origini dati: Manipolazione.
Implementare una destinazione di rilascio
È necessario un po' più lavoro per implementare una destinazione di rilascio rispetto a un'origine di rilascio, ma è ancora relativamente semplice.
Per implementare una destinazione ole drop
Se non è già presente, aggiungere una chiamata a
AfxOleInit
nella funzione membro dell'applicazioneInitInstance
. Questa chiamata è necessaria per inizializzare le librerie OLE.Aggiungere una variabile membro a ogni visualizzazione nell'applicazione che si vuole essere una destinazione di rilascio. Questa variabile membro deve essere di tipo
COleDropTarget
o di una classe derivata da essa.Dalla funzione della classe di visualizzazione che gestisce il messaggio WM_CREATE (in
OnCreate
genere ), chiamare la funzione membro dellaRegister
nuova variabile membro.Revoke
verrà chiamato automaticamente quando la visualizzazione viene distrutta.Eseguire l'override delle funzioni seguenti. Se si vuole lo stesso comportamento in tutta l'applicazione, eseguire l'override di queste funzioni nella classe di visualizzazione. Se si vuole modificare il comportamento in casi isolati o si vuole abilitare l'eliminazione in
CView
finestre non, eseguire l'override di queste funzioni nellaCOleDropTarget
classe derivata da .Sostituzione Per consentire OnDragEnter
Eliminare le operazioni da eseguire nella finestra. Chiamato quando il cursore entra per la prima volta nella finestra. OnDragLeave
Comportamento speciale quando l'operazione di trascinamento lascia la finestra specificata. OnDragOver
Eliminare le operazioni da eseguire nella finestra. Chiamato quando il cursore viene trascinato attraverso la finestra. OnDrop
Gestione dei dati eliminati nella finestra specificata. OnScrollBy
Comportamento speciale per quando lo scorrimento è necessario nella finestra di destinazione.
Vedere MAINVIEW. File CPP che fa parte dell'OCLIENT di esempio OLE MFC per un esempio di funzionamento di queste funzioni.
Per altre informazioni, vedere Oggetti dati OLE e origini dati: Creazione e distruzione e oggetti dati OLE e origini dati: Manipolazione.
Personalizzare il trascinamento della selezione
L'implementazione predefinita della funzionalità di trascinamento della selezione è sufficiente per la maggior parte delle applicazioni. Tuttavia, alcune applicazioni potrebbero richiedere di modificare questo comportamento standard. Questa sezione illustra i passaggi necessari per modificare queste impostazioni predefinite. È possibile usare questa tecnica per rendere le applicazioni che non supportano documenti composti in origini di rilascio.
Se si personalizza il comportamento di trascinamento della selezione OLE standard o si dispone di un'applicazione non OLE, è necessario creare un COleDataSource
oggetto per contenere i dati. Quando l'utente inizia un'operazione di trascinamento della selezione, il codice deve chiamare la funzione DoDragDrop
da questo oggetto anziché da altre classi che supportano le operazioni di trascinamento della selezione.
Facoltativamente, è possibile creare un oggetto COleDropSource
per controllare il rilascio e per eseguire l'override di alcune funzioni a seconda del tipo di comportamento che si desidera modificare. Questo oggetto origine rilascio viene quindi passato a COleDataSource::DoDragDrop
per modificare il comportamento predefinito di queste funzioni. Queste differenti opzioni offrono una grande flessibilità su come supportare le operazioni di trascinamento nell'applicazione che si sta sviluppando. Per altre informazioni sulle origini dati, vedere l'articolo Oggetti dati e origini dati (OLE).
È possibile eseguire l'override delle seguenti funzioni per personalizzare le operazioni di trascinamento e rilascio:
Sostituzione | Per personalizzare |
---|---|
OnBeginDrag |
La modalità di avvio dell'operazione di trascinamento dopo la chiamata DoDragDrop a . |
GiveFeedback |
Feedback visivo, come appare il cursore, per risultati di rilascio diversi. |
QueryContinueDrag |
Chiusura dell'operazione di trascinamento della selezione. Questa funzione consente di controllare gli stati dei tasti di modifica durante l'operazione di trascinamento. |
Vedi anche
OLE
Oggetti e origini dati OLE Data
Oggetti dati OLE e origini dati: creazione e distruzione
Oggetti dati OLE e origini dati: Manipolazione
COleClientItem::D oDragDrop
Classe COleDataSource
COleDataSource::D oDragDrop
Classe COleDropSource
Classe COleDropTarget
CView::OnDragLeave