Partager via


IDropTarget ::D ragOver, méthode (oleidl.h)

Fournit des commentaires cibles à l’utilisateur et communique l’effet de la chute à la fonction DoDragDrop afin qu’elle puisse communiquer l’effet de la suppression à la source.

Syntaxe

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

Paramètres

[in] grfKeyState

État actuel des touches de modification du clavier. Les valeurs valides peuvent être une combinaison des indicateurs MK_CONTROL, MK_SHIFT, MK_ALT, MK_BUTTON, MK_LBUTTON, MK_MBUTTON et MK_RBUTTON.

[in] pt

Structure POINTL contenant les coordonnées de curseur actuelles dans les coordonnées de l’écran.

[in, out] pdwEffect

Lors de l’entrée, pointeur vers la valeur du paramètre pdwEffect de la fonction DoDragDrop . Au retour, doit contenir l’un des indicateurs DROPEFFECT , qui indique le résultat de l’opération de suppression.

Valeur retournée

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

Code de retour Description
E_UNEXPECTED
Une erreur inattendue s’est produite.
E_INVALIDARG
La valeur pdwEffect n’est pas valide.
E_OUTOFMEMORY
La mémoire disponible était insuffisante pour cette opération.

Remarques

Vous n’appelez pas DragOver directement. La fonction DoDragDrop appelle cette méthode chaque fois que l’utilisateur déplace la souris sur une fenêtre cible donnée. DoDragDrop quitte la boucle si l’opération glisser-déplacer est annulée, si l’utilisateur fait glisser la souris hors de la fenêtre cible ou si la suppression est terminée.

Lors de l’implémentation de IDropTarget ::D ragOver, vous devez fournir des fonctionnalités similaires à celles de IDropTarget ::D ragEnter. Vous devez déterminer l’effet de la suppression des données sur la cible en examinant le FORMATETC définissant les formats et le support de l’objet de données, ainsi que l’état des touches de modification. La position de la souris peut également jouer un rôle dans la détermination de l’effet d’une chute. Les touches de modification suivantes affectent le résultat de la suppression.

Combinaison de touches User-Visible Commentaires Drop Effect
Ctrl +Maj = DROPEFFECT_LINK
CTRL + DROPEFFECT_COPY
Aucune touche ou MAJ None DROPEFFECT_MOVE
 

Vous communiquez l’effet de la suppression à la source via DoDragDrop dans pdwEffect. La fonction DoDragDrop appelle ensuite IDropSource ::GiveFeedback afin que l’application source puisse afficher les commentaires visuels appropriés à l’utilisateur.

Lors de l’entrée dans IDropTarget ::D ragOver, le paramètre pdwEffect doit être défini sur les effets autorisés passés au paramètre pdwOkEffect de la fonction DoDragDrop . La méthode IDropTarget ::D ragOver doit pouvoir choisir l’un de ces effets ou désactiver la suppression.

Lors du retour, pdwEffect est défini sur l’un des indicateurs DROPEFFECT. Cette valeur est ensuite passée au paramètre pdwEffect de DoDragDrop. Des valeurs raisonnables sont DROPEFFECT_COPY pour copier les données déplacées vers la cible, DROPEFFECT_LINK créer un lien vers les données sources ou DROPEFFECT_MOVE pour permettre le déplacement permanent des données déplacées de l’application source vers la cible.

Vous pouvez également fournir des commentaires visuels appropriés dans la fenêtre cible. Il se peut que certains commentaires de cible soient déjà affichés à partir d’un appel précédent à IDropTarget ::D ragOver ou à partir du IDropTarget ::D ragEnter initial. Si ces commentaires ne sont plus appropriés, vous devez les supprimer.

Pour des raisons d’efficacité, un objet de données n’est pas passé dans IDropTarget ::D ragOver. L’objet de données passé dans l’appel le plus récent à IDropTarget ::D ragEnter est disponible et peut être utilisé.

Lorsque IDropTarget ::D ragOver a terminé son opération, la fonction DoDragDrop appelle IDropSource ::GiveFeedback afin que l’application source puisse afficher les commentaires visuels appropriés à l’utilisateur.

Remarques aux implémenteurs

Cette fonction est fréquemment appelée pendant la boucle DoDragDrop . Il est donc judicieux d’optimiser autant que possible votre implémentation de la méthode DragOver .

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 oleidl.h

Voir aussi

DoDragDrop

IDropSource

IDropSourceNotify

IDropTarget

RegisterDragDrop

RevokeDragDrop