Fonction DoDragDrop (ole2.h)
Effectue une opération de glisser-déplacer OLE.
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 |
---|---|
|
L’opération de glisser-déplacer OLE a réussi. |
|
L’opération de glisser-déplacer OLE a été annulée. |
|
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.)
- 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.
- 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 .
- 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.
-
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.
-
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.
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 |