Faire glisser des images à partir d'une liste d'images
CImageList inclut des fonctions permettant de faire glisser une image sur l’écran. Les fonctions Glisser-déplacer déplacent une image en douceur, en couleurs, sans aucun clignotement du curseur. Les images masquées et démasquées peuvent être glissées.
La fonction membre BeginDrag commence une opération de glisser. Les paramètres incluent l'index de l'image à faire glisser et l'emplacement de la zone réactive dans l'image. La zone réactive est un seul pixel que les fonctions de glissement identifient comme l'emplacement exact de l'image à l'écran. Généralement, une application définit la zone réactive afin qu'elle coïncide avec la zone réactive du curseur de la souris. La fonction membre DragMove déplace l’image vers un nouvel emplacement.
La fonction membre DragEnter définit la position initiale de l’image glisser dans une fenêtre et dessine l’image à la position. Les paramètres incluent un pointeur vers la fenêtre dans laquelle ajouter l'image et un point qui spécifie les détails de la position initiale dans la fenêtre. Les coordonnées sont exprimées par rapport au coin supérieur gauche de la fenêtre, pas de la zone cliente. Il en va de même pour toutes les fonctions de glissement d'image qui prennent des coordonnées en tant que paramètres. Cela signifie que vous devez compenser la largeur des éléments de la fenêtre, telles que la bordure, la barre de titre et la barre de menus, lors de la spécification des coordonnées. Si vous spécifiez une poignée de fenêtre NULL lors de l’appel DragEnter
, les fonctions de glissement dessinent l’image dans le contexte de l’appareil associé à la fenêtre de bureau, et les coordonnées sont relatives au coin supérieur gauche de l’écran.
DragEnter
verrouille toutes les mises à jour dans la fenêtre donnée pendant l'opération de glissement. Si vous devez effectuer un dessin pendant une opération de glissement, par exemple mettre en surbrillance la cible d’une opération de glisser-déplacer, vous pouvez masquer temporairement l’image déplacée à l’aide de la fonction membre DragLeave . Vous pouvez également utiliser la fonction membre DragShowNoLock .
Appelez EndDrag lorsque vous avez terminé de faire glisser l’image.
La fonction membre SetDragCursorImage crée une nouvelle image glisser en combinant l’image donnée (généralement une image de curseur de souris) avec l’image de glisser actuelle. Étant donné que les fonctions de glissement utilisent la nouvelle image pendant une opération de glisser, vous devez utiliser la fonction Windows ShowCursor pour masquer le curseur de la souris réel après l’appel SetDragCursorImage
. Sinon, le système peut sembler être composé de deux curseurs de souris pour la durée de l'opération Glisser-déplacer.
Lorsqu'une application appelle BeginDrag
, le système crée une liste d'images temporaire interne et copie l'image glissée spécifiée dans la liste interne. Vous pouvez récupérer un pointeur vers la liste d’images de glisser temporaire à l’aide de la fonction membre GetDragImage . La fonction récupère également l'emplacement actuel de glissement et le décalage de l'image glissée par rapport à la position de glissement.