Funzione DoDragDrop (ole2.h)
Esegue un'operazione di trascinamento e rilascio OLE.
Sintassi
HRESULT DoDragDrop(
[in] LPDATAOBJECT pDataObj,
[in] LPDROPSOURCE pDropSource,
[in] DWORD dwOKEffects,
[out] LPDWORD pdwEffect
);
Parametri
[in] pDataObj
Puntatore all'interfaccia IDataObject in un oggetto dati contenente i dati trascinati.
[in] pDropSource
Puntatore a un'implementazione dell'interfaccia IDropSource , utilizzata per comunicare con l'origine durante l'operazione di trascinamento.
[in] dwOKEffects
Gli effetti dell'origine consentono nell'operazione di trascinamento e rilascio OLE. Il più significativo è se consente uno spostamento. I parametri dwOKEffect e pdwEffect ottengono valori dall'enumerazione DROPEFFECT . Per un elenco di valori, vedere DROPEFFECT.
[out] pdwEffect
Puntatore a un valore che indica il modo in cui l'operazione di trascinamento OLE ha interessato i dati di origine. Il parametro pdwEffect viene impostato solo se l'operazione non viene annullata.
Valore restituito
Questa funzione restituisce S_OK in caso di esito positivo. Altri valori possibili includono quanto segue.
Codice restituito | Descrizione |
---|---|
|
L'operazione di trascinamento OLE ha avuto esito positivo. |
|
L'operazione di trascinamento OLE è stata annullata. |
|
Si è verificato un errore imprevisto. |
Commenti
Se si sta sviluppando un'applicazione che può fungere da origine dati per un'operazione di trascinamento e rilascio OLE, è necessario chiamare DoDragDrop quando si rileva che l'utente ha avviato un'operazione di trascinamento e rilascio OLE.
La funzione DoDragDrop entra in un ciclo in cui chiama vari metodi nelle interfacce IDropSource e IDropTarget. Per un'operazione di trascinamento riuscita, l'applicazione che funge da origine dati deve anche implementare IDropSource, mentre l'applicazione di destinazione deve implementare IDropTarget.
- La funzione DoDragDrop determina la finestra nella posizione del cursore corrente. Verifica quindi se questa finestra è una destinazione di rilascio valida.
- Se la finestra è una destinazione di rilascio valida, DoDragDrop chiama IDropTarget::D ragEnter. Questo metodo fornisce un codice effetto che indica cosa accadrebbe se l'eliminazione si è effettivamente verificata. Per un elenco di effetti di eliminazione validi, vedere l'enumerazione DROPEFFECT .
- DoDragDrop chiama IDropSource::GiveFeedback con il codice effetto in modo che l'interfaccia di origine di rilascio possa fornire commenti visivi appropriati all'utente. Il puntatore pDropSource passato a DoDragDrop specifica l'interfaccia IDropSource appropriata.
-
DoDragDrop tiene traccia dei movimenti del cursore del mouse e modifiche nello stato del pulsante della tastiera o del mouse.
- Se l'utente si sposta fuori da una finestra, DoDragDrop chiama IDropTarget::D ragLeave.
- Se il mouse entra in un'altra finestra, DoDragDrop determina se tale finestra è una destinazione di rilascio valida e quindi chiama IDropTarget::D ragEnter per tale finestra.
- Se il mouse si sposta ma rimane nella stessa finestra, DoDragDrop chiama IDropTarget::D ragOver.
-
Se si verifica una modifica nello stato della tastiera o del pulsante del mouse, DoDragDrop chiama IDropSource::QueryContinueDrag e determina se continuare il trascinamento, per eliminare i dati o annullare l'operazione in base al valore restituito.
- Se il valore restituito è S_OK, DoDragDrop chiama prima IDropTarget::D ragOver per continuare l'operazione. Questo metodo restituisce un nuovo valore di effetto e DoDragDrop quindi chiama IDropSource::GiveFeedback con il nuovo effetto in modo che sia possibile impostare commenti visivi appropriati. Per un elenco di effetti di eliminazione validi, vedere l'enumerazione DROPEFFECT . IDropTarget::D ragOver e IDropSource::GiveFeedback vengono associati in modo che, quando il mouse si sposta nella destinazione di rilascio, l'utente riceve il feedback più aggiornato sulla posizione del mouse.
- Se il valore restituito è DRAGDROP_S_DROP, DoDragDrop chiama IDropTarget::D rop. La funzione DoDragDrop restituisce l'ultimo codice effetto all'origine, quindi l'applicazione di origine può eseguire l'operazione appropriata sui dati di origine, ad esempio tagliare i dati se l'operazione è stata spostata.
- Se il valore restituito è DRAGDROP_S_CANCEL, la funzione DoDragDrop chiama IDropTarget::D ragLeave.
Per supportare l'input tocco o penna, non chiamare DoDragDrop dal gestore tocco. Chiamare invece DoDragDrop dal gestore per i messaggi del mouse che il sistema sintetizza all'input tocco.
L'applicazione può identificare i messaggi sintetizzati chiamando la funzione GetMessageExtraInfo . Per altre informazioni sull'uso di GetMessageExtraInfo per distinguere tra input del mouse e input tocco di Windows, vedere Risoluzione dei problemi delle applicazioni.
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 | ole2.h |
Libreria | Ole32.lib |
DLL | Ole32.dll |