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 |
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour