Opérations de glisser-déposer pour le contrôle d’arborescence

Un contrôle d’arborescence (CTreeCtrl) envoie une notification lorsque l’utilisateur commence à faire glisser un élément. Le contrôle envoie un message de notification TVN_BEGINDRAG lorsque l’utilisateur commence à faire glisser un élément avec le bouton gauche de la souris et un message de notification TVN_BEGINRDRAG lorsque l’utilisateur commence à faire glisser avec le bouton droit. Vous pouvez empêcher un contrôle d’arborescence d’envoyer ces notifications en donnant au contrôle d’arborescence le style TVS_DISABLPEPT AGDROP.

Vous obtenez une image à afficher pendant une opération de glisser en appelant la fonction membre CreateDragImage . L’arborescence crée une image bitmap de glissement basée sur le nom de l’élément déplacé. Ensuite, le contrôle d’arborescence crée une liste d’images, y ajoute la bitmap et retourne un pointeur vers l’objet CImageList .

Vous devez fournir du code faisant glisser réellement l'élément. Cela implique généralement l’utilisation des fonctionnalités de glissement des fonctions de liste d’images et le traitement des messages WM_MOUSEMOVE et WM_LBUTTONUP (ou WM_RBUTTONUP) envoyés après le début de l’opération de glisser. Pour plus d’informations sur les fonctions de liste d’images, consultez CImageList dans la référence MFC et les listes d’images dans le Kit de développement logiciel (SDK) Windows. Pour plus d’informations sur le glissement d’un élément de contrôle d’arborescence, consultez Faire glisser l’élément d’arborescence, également dans le Kit de développement logiciel (SDK) Windows.

Si les éléments d’un contrôle d’arborescence vont être des cibles d’opérations de type Glisser-déposer, vous devez savoir quand le curseur de la souris est sur un élément cible. Vous pouvez le savoir en appelant la fonction membre HitTest . Vous spécifiez un point et un entier, ou l’adresse d’une structure TVHITTESTINFO qui contient les coordonnées actuelles du curseur de la souris. Après le retour de la fonction, l’entier ou la structure contient un indicateur qui fournit l’emplacement du curseur de la souris par rapport au contrôle d’arborescence. Si le curseur est sur un élément de l’arborescence, la structure contiendra également le handle de l’élément.

Vous pouvez indiquer qu’un élément est la cible d’une opération de glisser-déplacer en appelant la fonction membre SetItem pour définir l’état sur la TVIS_DROPHILITED valeur. Un élément avec cet état est dessiné dans le style utilisé pour indiquer une cible de glissement-déplacement.

Voir aussi

Utilisation de CTreeCtrl
Contrôles