Fonction DoDragDrop (ole2.h)

Effectue une opération de glisser-déplacer OLE.

Note Vous devez appeler OleInitialize avant d’appeler cette fonction.
 

Syntaxe

HRESULT DoDragDrop(
  [in]  LPDATAOBJECT pDataObj,
  [in]  LPDROPSOURCE pDropSource,
  [in]  DWORD        dwOKEffects,
  [out] LPDWORD      pdwEffect
);

Paramètres

[in] pDataObj

Pointeur vers l’interface IDataObject sur un objet de données qui contient les données déplacées.

[in] pDropSource

Pointeur vers une implémentation de l’interface IDropSource , qui est utilisée pour communiquer avec la source pendant l’opération de glisser.

[in] dwOKEffects

Effets que la source autorise dans l’opération de glisser-déplacer OLE. Le plus important est de savoir s’il permet un déplacement. Les paramètres dwOKEffect et pdwEffect obtiennent des valeurs à partir de l’énumération DROPEFFECT . Pour obtenir la liste des valeurs, consultez DROPEFFECT.

[out] pdwEffect

Pointeur vers une valeur qui indique comment l’opération de glisser-déplacer OLE a affecté les données sources. Le paramètre pdwEffect est défini uniquement si l’opération n’est pas annulée.

Valeur retournée

Cette fonction retourne S_OK en cas de réussite. Les autres valeurs possibles sont les suivantes.

Code de retour Description
DRAGDROP_S_DROP
L’opération de glisser-déplacer OLE a réussi.
DRAGDROP_S_CANCEL
L’opération de glisser-déplacer OLE a été annulée.
E_UNSPEC
Une erreur inattendue s'est produite.

Remarques

Si vous développez une application qui peut servir de source de données pour une opération de glisser-déplacer OLE, vous devez appeler DoDragDrop lorsque vous détectez que l’utilisateur a démarré une opération de glisser-déplacer OLE.

La fonction DoDragDrop entre dans une boucle dans laquelle elle appelle différentes méthodes dans les interfaces IDropSource et IDropTarget . (Pour une opération de glisser-déplacer réussie, l’application agissant comme source de données doit également implémenter IDropSource, tandis que l’application cible doit implémenter IDropTarget.)

  1. La fonction DoDragDrop détermine la fenêtre sous l’emplacement actuel du curseur. Il vérifie ensuite si cette fenêtre est une cible de suppression valide.
  2. Si la fenêtre est une cible de suppression valide, DoDragDrop appelle IDropTarget ::D ragEnter. Cette méthode fournit un code d’effet indiquant ce qui se passerait si la suppression s’est réellement produite. Pour obtenir la liste des effets de suppression valides, consultez l’énumération DROPEFFECT .
  3. DoDragDrop appelle IDropSource ::GiveFeedback avec le code d’effet afin que l’interface source de suppression puisse fournir des commentaires visuels appropriés à l’utilisateur. Le pointeur pDropSource passé dans DoDragDrop spécifie l’interface IDropSource appropriée.
  4. DoDragDrop suit les mouvements du curseur de la souris et les modifications apportées à l’état du clavier ou du bouton de la souris.
    • Si l’utilisateur sort d’une fenêtre, DoDragDrop appelle IDropTarget ::D ragLeave.
    • Si la souris entre dans une autre fenêtre, DoDragDrop détermine si cette fenêtre est une cible de suppression valide, puis appelle IDropTarget ::D ragEnter pour cette fenêtre.
    • Si la souris se déplace mais reste dans la même fenêtre, DoDragDrop appelle IDropTarget ::D ragOver.
  5. En cas de modification de l’état du clavier ou du bouton de la souris, DoDragDrop appelle IDropSource ::QueryContinueDrag et détermine s’il faut continuer le glisser, supprimer les données ou annuler l’opération en fonction de la valeur de retour.
    • Si la valeur de retour est S_OK, DoDragDrop appelle d’abord IDropTarget ::D ragOver pour poursuivre l’opération. Cette méthode retourne une nouvelle valeur d’effet et DoDragDrop appelle ensuite IDropSource ::GiveFeedback avec le nouvel effet afin que les commentaires visuels appropriés puissent être définis. Pour obtenir la liste des effets de suppression valides, consultez l’énumération DROPEFFECT . IDropTarget ::D ragOver et IDropSource ::GiveFeedback sont associés de sorte que lorsque la souris se déplace sur la cible de dépôt, l’utilisateur reçoit les commentaires les plus à jour sur la position de la souris.
    • Si la valeur de retour est DRAGDROP_S_DROP, DoDragDrop appelle IDropTarget ::D rop. La fonction DoDragDrop retourne le code du dernier effet à la source, afin que l’application source puisse effectuer l’opération appropriée sur les données sources, par exemple couper les données si l’opération était un déplacement.
    • Si la valeur de retour est DRAGDROP_S_CANCEL, la fonction DoDragDrop appelle IDropTarget ::D ragLeave.
DoDragDrop ne prend pas en charge l’appel de la prise en charge du glisser-déplacer lorsque vous gérez l’entrée tactile ou au stylet.

Pour prendre en charge l’entrée tactile ou au stylet, n’appelez pas DoDragDrop à partir de votre gestionnaire tactile. Au lieu de cela, appelez DoDragDrop à partir de votre gestionnaire pour les messages de souris que le système synthétise lors de l’entrée tactile.

L’application peut identifier les messages synthétisés en appelant la fonction GetMessageExtraInfo . Pour plus d’informations sur l’utilisation de GetMessageExtraInfo pour faire la distinction entre l’entrée de la souris et l’entrée Windows Touch, consultez Résolution des problèmes d’applications.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête ole2.h
Bibliothèque Ole32.lib
DLL Ole32.dll

Voir aussi

IDropSource