Condividi tramite


Metodo IDropTarget::D ragOver (oleidl.h)

Fornisce un feedback di destinazione all'utente e comunica l'effetto dell'eliminazione alla funzione DoDragDrop in modo che possa comunicare l'effetto del dropback all'origine.

Sintassi

HRESULT DragOver(
  [in]      DWORD  grfKeyState,
  [in]      POINTL pt,
  [in, out] DWORD  *pdwEffect
);

Parametri

[in] grfKeyState

Stato corrente dei tasti di modifica della tastiera sulla tastiera. I valori validi possono essere una combinazione di qualsiasi flag MK_CONTROL, MK_SHIFT, MK_ALT, MK_BUTTON, MK_LBUTTON, MK_MBUTTON e MK_RBUTTON.

[in] pt

Struttura POINTL contenente le coordinate correnti del cursore nelle coordinate dello schermo.

[in, out] pdwEffect

In input, puntatore al valore del parametro pdwEffect della funzione DoDragDrop . In caso di restituzione, deve contenere uno dei flag DROPEFFECT , che indica il risultato dell'operazione di rilascio.

Valore restituito

Questo metodo restituisce S_OK se l'operazione ha esito positivo. Altri valori possibili includono quanto segue.

Codice restituito Descrizione
E_UNEXPECTED
Si è verificato un errore imprevisto.
E_INVALIDARG
Il valore pdwEffect non è valido.
E_OUTOFMEMORY
Memoria insufficiente disponibile per questa operazione.

Commenti

Non chiamare direttamente DragOver . La funzione DoDragDrop chiama questo metodo ogni volta che l'utente sposta il mouse in una determinata finestra di destinazione. DoDragDrop esce dal ciclo se l'operazione di trascinamento della selezione viene annullata, se l'utente trascina il mouse fuori dalla finestra di destinazione o se la selezione viene completata.

Nell'implementazione di IDropTarget::D ragOver, è necessario fornire funzionalità simili a quelle in IDropTarget::D ragEnter. È necessario determinare l'effetto dell'eliminazione dei dati sulla destinazione esaminando il formato FORMATETC che definisce i formati e il supporto dell'oggetto dati, insieme allo stato delle chiavi di modifica. La posizione del mouse può anche svolgere un ruolo nel determinare l'effetto di una goccia. I tasti di modifica seguenti influiscono sul risultato dell'eliminazione.

Combinazione di tasti User-Visible Commenti e suggerimenti Effetto drop
CTRL+ MAIUSC = DROPEFFECT_LINK
CTRL + DROPEFFECT_COPY
Nessun tasto o MAIUSC Nessuno DROPEFFECT_MOVE
 

Si comunica l'effetto del dropback all'origine tramite DoDragDrop in pdwEffect. La funzione DoDragDrop chiama quindi IDropSource::GiveFeedback in modo che l'applicazione di origine possa visualizzare il feedback visivo appropriato all'utente.

Nella voce di IDropTarget::D ragOver, il parametro pdwEffect deve essere impostato sugli effetti consentiti passati al parametro pdwOkEffect della funzione DoDragDrop . Il metodo IDropTarget::D ragOver deve essere in grado di scegliere uno di questi effetti o disabilitare l'eliminazione.

Al momento della restituzione, pdwEffect è impostato su uno dei flag DROPEFFECT. Questo valore viene quindi passato al parametro pdwEffect di DoDragDrop. I valori ragionevoli sono DROPEFFECT_COPY per copiare i dati trascinati nella destinazione, DROPEFFECT_LINK creare un collegamento ai dati di origine o DROPEFFECT_MOVE per consentire lo spostamento permanente dei dati trascinati dall'applicazione di origine alla destinazione.

È anche possibile fornire commenti visivi appropriati nella finestra di destinazione. Potrebbe essere visualizzato un feedback di destinazione già visualizzato da una chiamata precedente a IDropTarget::D ragOver o dall'IDropTarget::D ragEnter iniziale. Se questo feedback non è più appropriato, è necessario rimuoverlo.

Per motivi di efficienza, un oggetto dati non viene passato in IDropTarget::D ragOver. L'oggetto dati passato nella chiamata più recente a IDropTarget::D ragEnter è disponibile e può essere usato.

Quando IDropTarget::D ragOver ha completato l'operazione, la funzione DoDragDrop chiama IDropSource::GiveFeedback in modo che l'applicazione di origine possa visualizzare il feedback visivo appropriato all'utente.

Note per gli implementatori

Questa funzione viene chiamata spesso durante il ciclo DoDragDrop , quindi è opportuno ottimizzare l'implementazione del metodo DragOver il più possibile.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione oleidl.h

Vedi anche

Dodragdrop

IDropSource

IDropSourceNotify

Idroptarget

RegisterDragDrop

RevokeDragDrop