À propos des contrôles Tree-View

Un contrôle arborescence est une fenêtre qui affiche une liste hiérarchique d’éléments, tels que les en-têtes d’un document, les entrées d’un index ou les fichiers et répertoires d’un disque. Chaque élément se compose d’une étiquette et d’une image bitmap facultative, et chaque élément peut avoir une liste de sous-éléments associés. En cliquant sur un élément, l’utilisateur peut développer ou réduire la liste de sous-éléments associée.

L’illustration suivante montre un contrôle d’arborescence simple avec un nœud racine, un nœud développé et un nœud réduit. Le contrôle utilise une bitmap pour l’élément sélectionné et une autre bitmap pour d’autres éléments.

capture d’écran montrant cinq nœuds dans une hiérarchie ; le texte d’un nœud est sélectionné, mais les nœuds ne sont pas liés les uns aux autres par des lignes

Après avoir créé un contrôle arborescence, vous ajoutez, supprimez, organisez ou manipulez des éléments en envoyant des messages au contrôle. Chaque message a une ou plusieurs macros correspondantes que vous pouvez utiliser au lieu d’envoyer le message explicitement.

Les rubriques suivantes sont abordées dans cette section.

styles Tree-View

Les styles d’arborescence régissent les aspects de l’apparence d’un contrôle d’arborescence. Vous définissez les styles initiaux lorsque vous créez le contrôle arborescence. Vous pouvez récupérer et modifier les styles après avoir créé le contrôle d’arborescence à l’aide des fonctions GetWindowLong et SetWindowLong .

Le style TVS_HASLINES améliore la représentation graphique de la hiérarchie d’un contrôle d’arborescence en dessinant des lignes qui lient des éléments enfants à leur élément parent, comme illustré dans l’illustration suivante.

capture d’écran montrant la disposition précédente, mais avec des lignes joignant les nœuds ; la première ligne descend du nœud racine

En soi, ce style ne dessine pas de lignes à la racine de la hiérarchie. Pour ce faire, vous devez combiner les styles TVS_HASLINES et TVS_LINESATROOT . Le résultat est illustré dans l’illustration suivante.

capture d’écran montrant la disposition précédente, mais avec une ligne horizontale supplémentaire menant au nœud racine

L‘utilisateur peut développer ou réduire la liste des éléments enfants d‘un élément parent en double-cliquant sur l‘élément parent. Un contrôle arborescence qui a le style TVS_HASBUTTONS ajoute un bouton sur le côté gauche de chaque élément parent. L’utilisateur peut cliquer sur le bouton une seule fois au lieu de double-cliquer sur l’élément parent pour développer ou réduire l’enfant. TVS_HASBUTTONS n’ajoute pas de boutons aux éléments à la racine de la hiérarchie. Pour ce faire, vous devez combiner TVS_HASLINES, TVS_LINESATROOT et TVS_HASBUTTONS. Cette combinaison de styles est illustrée dans l’illustration suivante.

capture d’écran montrant la disposition précédente, mais avec des boutons développer/réduire à chaque sommet de deux lignes

Le style TVS_CHECKBOXES crée des cases à cocher en regard de chaque élément. Si vous souhaitez utiliser le style de case à cocher, vous devez définir le style TVS_CHECKBOXES (avec SetWindowLong) après avoir créé le contrôle d’arborescence et avant de remplir l’arborescence. Sinon, les cases à cocher peuvent apparaître décochées, en fonction des problèmes de minutage. L’illustration suivante montre le style de case à cocher.

capture d’écran montrant la disposition précédente, mais avec une case à cocher en regard de chaque nœud ; deux des cases à cocher sont cochées

Le style TVS_FULLROWSELECT fait que la sélection s’étend sur toute la largeur du contrôle, pas seulement sur l’élément lui-même. L’illustration suivante montre ce style.

capture d’écran montrant la disposition d’origine de cinq nœuds sans lignes, mais la mise en surbrillance de la sélection étend la largeur complète du contrôle

Le style TVS_EDITLABELS permet à l’utilisateur de modifier les étiquettes des éléments d’arborescence. Pour plus d’informations sur la modification d’étiquettes, consultez Modification d’étiquette tree-View.

Pour plus d’informations sur ces styles et d’autres, consultez Styles de fenêtre de contrôle d’arborescence.

Éléments parents et enfants

N’importe quel élément d’un contrôle arborescence peut être associé à une liste de sous-éléments( appelés éléments enfants). Un élément qui a un ou plusieurs éléments enfants est appelé élément parent. Un élément enfant s’affiche sous son élément parent et est mis en retrait pour indiquer qu’il est subordonné au parent. Un élément qui n’a pas de parent apparaît en haut de la hiérarchie et est appelé élément racine.

Pour ajouter un élément à un contrôle arborescence, envoyez le message TVM_INSERTITEM au contrôle. Le message retourne un handle au type HTREEITEM, qui identifie de manière unique l’élément. Lors de l’ajout d’un élément, vous devez spécifier le handle à l’élément parent du nouvel élément. Si vous spécifiez NULL ou la valeur TVI_ROOT au lieu d’un handle d’élément parent dans la structure TVINSERTSTRUCT , l’élément est ajouté en tant qu’élément racine.

À tout moment, l‘état d‘une liste d‘éléments parents pour des éléments enfants peut être développé ou réduit. Lorsque l’état est développé, les éléments enfants apparaissent sous l’élément parent. Lorsqu'il est réduit, les éléments enfants ne sont pas affichés. La liste bascule automatiquement entre les états développé et réduit lorsque l’utilisateur double-clique sur l’élément parent ou, si le parent a le style TVS_HASBUTTONS , quand l’utilisateur clique sur le bouton associé à l’élément parent. Une application peut développer ou réduire les éléments enfants à l’aide du message TVM_EXPAND .

Un contrôle arborescence envoie à la fenêtre parente un message de notification TVN_ITEMEXPANDING lorsque la liste d’éléments enfants d’un élément parent est sur le point d’être développée ou réduite. La notification donne à une application la possibilité d’empêcher la modification ou de définir les attributs de l’élément parent qui dépendent de l’état de la liste des éléments enfants. Après avoir modifié l’état de la liste, le contrôle arborescence envoie à la fenêtre parente un message de notification TVN_ITEMEXPANDED .

Lorsqu’une liste d’éléments enfants est développée, elle est mise en retrait par rapport à l’élément parent. Vous pouvez définir la quantité de retrait à l’aide du message TVM_SETINDENT ou récupérer le montant actuel à l’aide du TVM_GETINDENT message.

Un contrôle arborescence utilise la mémoire allouée à partir du tas du processus qui crée le contrôle arborescence. Le nombre maximal d’éléments dans une arborescence est basé sur la quantité de mémoire disponible dans le tas.

Étiquettes d’élément

Vous spécifiez généralement le texte de l’étiquette d’un élément lors de l’ajout de l’élément au contrôle arborescence. Le message TVM_INSERTITEM inclut une structure TVITEM qui définit les propriétés de l’élément, y compris une chaîne contenant le texte de l’étiquette.

Un contrôle arborescence alloue de la mémoire pour le stockage de chaque élément ; le texte des étiquettes d’élément occupe une partie importante de cette mémoire. Si votre application conserve une copie des chaînes dans le contrôle arborescence, vous pouvez réduire les besoins en mémoire du contrôle en spécifiant la valeur LPSTR_TEXTCALLBACK dans le membre pszText de TVITEM au lieu de passer des chaînes réelles à l’arborescence. L’utilisation de LPSTR_TEXTCALLBACK entraîne la récupération du texte de l’étiquette d’un élément à partir de la fenêtre parente chaque fois que l’élément doit être redessiné. Pour récupérer le texte, le contrôle arborescence envoie un message de notification TVN_GETDISPINFO , qui inclut l’adresse d’une structure NMTVDISPINFO . La fenêtre parente doit remplir les membres appropriés de la structure incluse.

Tree-View Modification d’étiquette

L’utilisateur peut modifier directement les étiquettes des éléments dans un contrôle arborescence qui a le style TVS_EDITLABELS . L’utilisateur commence à modifier en cliquant sur l’étiquette de l’élément qui a le focus. Une application commence à modifier à l’aide du message TVM_EDITLABEL . Le contrôle arborescence avertit la fenêtre parente lorsque la modification commence et quand elle est annulée ou terminée. Une fois la modification terminée, la fenêtre parente est responsable de la mise à jour de l’étiquette de l’élément, le cas échéant.

Lorsque la modification d’étiquette commence, un contrôle arborescence envoie à sa fenêtre parente un message de notification TVN_BEGINLABELEDIT . En traitant cette notification, une application peut autoriser la modification de certaines étiquettes et empêcher la modification d’autres. Le retour de zéro permet la modification, et le retour de zéro l’empêche.

Lorsque la modification d’étiquette est annulée ou terminée, un contrôle arborescence envoie à sa fenêtre parente un TVN_ENDLABELEDIT message de notification. Le paramètre lParam est l’adresse d’une structure NMTVDISPINFO . Le paramètre item est une structure TVITEM qui identifie l’élément et inclut le texte modifié. La fenêtre parente est responsable de la mise à jour de l’étiquette de l’élément si elle souhaite conserver la nouvelle étiquette. Le membre pszText de TVITEM est égal à zéro si la modification est annulée.

Lors de la modification d’étiquette, généralement en réponse au message de notification TVN_BEGINLABELEDIT , vous pouvez récupérer le handle du contrôle d’édition utilisé pour la modification d’étiquette à l’aide du message TVM_GETEDITCONTROL . Vous pouvez envoyer au contrôle d’édition un message EM_SETLIMITTEXT pour limiter la quantité de texte qu’un utilisateur peut entrer ou sous-classer le contrôle d’édition pour intercepter et ignorer des caractères non valides. Notez toutefois que le contrôle d’édition s’affiche uniquement après l’envoi de TVN_BEGINLABELEDIT.

position de l’élément Tree-View

La position initiale d’un élément est définie lorsque l’élément est ajouté au contrôle d’arborescence à l’aide du message TVM_INSERTITEM . Le message inclut une structure TVINSERTSTRUCT qui spécifie le handle de l’élément parent et le handle de l’élément après lequel le nouvel élément doit être inséré. Le deuxième handle doit identifier un élément enfant du parent donné ou l’une de ces valeurs : TVI_FIRST, TVI_LAST ou TVI_SORT.

Lorsque TVI_FIRST ou TVI_LAST est spécifié, le contrôle arborescence place le nouvel élément au début ou à la fin de la liste des éléments enfants de l’élément parent donné. Lorsque TVI_SORT est spécifié, le contrôle arborescence insère le nouvel élément dans la liste des éléments enfants par ordre alphabétique en fonction du texte des étiquettes d’élément.

Vous pouvez placer la liste des éléments enfants d’un élément parent dans l’ordre alphabétique à l’aide du message TVM_SORTCHILDREN . Le message inclut un paramètre qui spécifie si tous les niveaux d’éléments enfants descendant de l’élément parent donné sont également triés par ordre alphabétique.

Le message TVM_SORTCHILDRENCB vous permet de trier les éléments enfants en fonction des critères que vous définissez. Lorsque vous utilisez ce message, vous spécifiez une fonction de rappel définie par l’application que le contrôle d’arborescence peut appeler chaque fois que l’ordre relatif de deux éléments enfants doit être déterminé. La fonction de rappel reçoit deux valeurs 32 bits définies par l’application pour les éléments comparés et une troisième valeur de 32 bits que vous spécifiez lors de l’envoi de TVM_SORTCHILDRENCB.

vue d’ensemble des états de l’élément Tree-View

Chaque élément d’un contrôle d’arborescence a un état actuel. Les informations d’état de chaque élément incluent un ensemble d’indicateurs de bits ainsi que des index de liste d’images qui indiquent l’image d’état et l’image de superposition de l’élément. Les indicateurs de bits indiquent si l’élément est sélectionné, désactivé, développé, etc. Pour la plupart, un contrôle d’arborescence définit automatiquement l’état d’un élément pour refléter les actions de l’utilisateur, telles que la sélection d’un élément. Toutefois, vous pouvez également définir l’état d’un élément à l’aide du message TVM_SETITEM , et vous pouvez récupérer l’état actuel d’un élément à l’aide du message TVM_GETITEM . Pour obtenir la liste complète des états d’élément, consultez États de l’élément de contrôle arborescence.

L’état actuel d’un élément est spécifié par le membre d’état de la structure TVITEM . Un contrôle d’arborescence peut modifier l’état d’un élément pour refléter une action de l’utilisateur, telle que la sélection de l’élément ou la définition du focus sur l’élément. En outre, une application peut modifier l'état d'un élément pour désactiver ou masquer l'élément ou pour spécifier une image de superposition ou d'état.

Lorsque vous spécifiez ou modifiez l’état d’un élément, le membre masque d’état de TVITEM spécifie les bits d’état à définir, et le membre d’état contient les nouvelles valeurs de ces bits.

Pour définir l’image de superposition d’un élément, le masque d’état doit inclure la valeur TVIS_OVERLAYMASK , et l’état doit inclure l’index de base unique de l’image de superposition décalée de 8 bits vers la gauche à l’aide de la macro INDEXTOOVERLAYMASK . L’index peut être égal à zéro pour ne spécifier aucune image superposée.

Une image d’état s’affiche en regard de l’icône d’un élément pour indiquer un état défini par l’application. Les images d’état sont contenues dans une liste d’images d’état spécifiée par l’envoi d’un message TVM_SETIMAGELIST . Pour définir l’image d’état d’un élément, incluez la valeur TVIS_STATEIMAGEMASK dans le membre masque d’état de la structure TVITEM . Les bits 12 à 15 du membre d’état de la structure spécifient l’index dans la liste d’images d’état de l’image à dessiner.

Pour définir l’index d’image d’état, utilisez INDEXTOSTATEIMAGEMASK. Cette macro prend un index et définit les bits 12 à 15 de manière appropriée. Pour indiquer que l’élément n’a pas d’image d’état, définissez l’index sur zéro. Cette convention signifie que l’image zéro dans la liste d’images d’état ne peut pas être utilisée comme image d’état. Pour isoler les bits 12 à 15 du membre d’État , utilisez le masque TVIS_STATEIMAGEMASK . Pour plus d’informations sur la superposition et les images d’état, consultez Listes d’images en mode arborescence.

Sélection de l’élément

Un contrôle d’arborescence avertit la fenêtre parente lorsque la sélection passe d’un élément à un autre en envoyant les messages de notification TVN_SELCHANGING et TVN_SELCHANGED . Les deux notifications incluent une valeur qui spécifie si la modification est le résultat d’un clic de souris ou d’une séquence de touches. Les notifications incluent également des informations sur l’élément qui obtient la sélection et l’élément qui perd la sélection. Vous pouvez utiliser ces informations pour définir des attributs d’élément qui dépendent de l’état de sélection de l’élément. Le retour de TRUE en réponse à TVN_SELCHANGING empêche la sélection de changer, et le retour de FALSE autorise la modification.

Une application peut modifier la sélection en envoyant le message TVM_SELECTITEM .

Informations sur l’élément

Les contrôles d’arborescence prennent en charge un certain nombre de messages qui récupèrent des informations sur les éléments du contrôle.

Le message TVM_GETITEM peut récupérer le handle et les attributs d’un élément. Les attributs d’un élément incluent son état actuel, les index dans la liste d’images du contrôle des images bitmap sélectionnées et non sélectionnées de l’élément, un indicateur qui indique si l’élément a des éléments enfants, l’adresse de la chaîne d’étiquette de l’élément et la valeur 32 bits définie par l’application de l’élément.

Le message TVM_GETNEXTITEM récupère l’élément d’arborescence qui porte la relation spécifiée avec l’élément actif. Le message peut récupérer le parent d’un élément, l’élément visible suivant ou précédent, le premier élément enfant, etc.

Le message TVM_GETITEMRECT récupère le rectangle englobant d’un élément d’arborescence. Les messages TVM_GETCOUNT et TVM_GETVISIBLECOUNT récupèrent respectivement le nombre d’éléments dans un contrôle d’arborescence et le nombre d’éléments qui peuvent être entièrement visibles dans la fenêtre du contrôle d’arborescence. Vous pouvez vous assurer qu’un élément particulier est visible à l’aide du message TVM_ENSUREVISIBLE .

Tree-View Listes d’images

Quatre images bitmap peuvent être associées à chaque élément d’un contrôle d’arborescence.

  • Image, telle qu’un dossier ouvert, affichée lorsque l’élément est sélectionné.
  • Image, telle qu’un dossier fermé, affichée lorsque l’élément n’est pas sélectionné.
  • Image superposée dessinée en toute transparence sur l’image sélectionnée ou non sélectionnée.
  • Image d’état, qui est une image supplémentaire affichée à gauche de l’image sélectionnée ou non sélectionnée. Vous pouvez utiliser des images d’état, telles que des zones de case activée activées et désactivées, pour indiquer les états d’élément définis par l’application.

Par défaut, un contrôle arborescence n’affiche pas d’images d’élément. Pour afficher des images d’élément, vous devez créer des listes d’images et les associer au contrôle . Pour plus d’informations sur les listes d’images, consultez Listes d’images.

Un contrôle d’arborescence peut avoir deux listes d’images : une liste d’images normale et une liste d’images d’état. Une liste d’images normale stocke les images sélectionnées, non sélectionnées et superposées. Une liste d’images d’état stocke des images d’état. Utilisez la fonction ImageList_Create pour créer une liste d’images et utilisez d’autres fonctions de liste d’images pour ajouter des bitmaps à la liste d’images. Ensuite, pour associer la liste d’images au contrôle arborescence, utilisez le message TVM_SETIMAGELIST . Le message TVM_GETIMAGELIST récupère un handle dans l’une des listes d’images d’un contrôle d’arborescence. Ce message est utile si vous devez ajouter d’autres images à la liste.

En plus des images sélectionnées et non sélectionnées, la liste d’images normales d’un contrôle d’arborescence peut contenir jusqu’à quatre images superposées. Les images superposées sont identifiées par un index de base unique et sont conçues pour être dessinées en toute transparence sur les images sélectionnées et non sélectionnées. Pour affecter un index de masque de superposition à une image dans la liste d’images normale, appelez la fonction ImageList_SetOverlayImage .

Par défaut, tous les éléments affichent la première image de la liste d’images normales pour les états sélectionnés et non sélectionnés. En outre, par défaut, les éléments n’affichent pas d’images superposées ou d’images d’état. Vous pouvez modifier ces comportements par défaut pour un élément en envoyant le message TVM_INSERTITEM ou TVM_SETITEM . Ces messages utilisent la structure TVITEM pour spécifier des index de liste d’images pour un élément.

Pour spécifier les images sélectionnées et non sélectionnées d’un élément, définissez les bits TVIF_SELECTEDIMAGE et TVIF_IMAGE dans le membre masque de la structure TVITEM et spécifiez les index de la liste d’images normales du contrôle dans les membres iSelectImage et iImage . Vous pouvez également spécifier la valeur I_IMAGECALLBACK dans iSelectImage et iImage au lieu de spécifier des index. Cela amène le contrôle à interroger sa fenêtre parente pour obtenir un index de liste d’images chaque fois que l’élément est sur le point d’être redessiné. Le contrôle envoie le message de notification TVN_GETDISPINFO pour récupérer l’index.

Pour associer une image de superposition à un élément, utilisez la macro INDEXTOOVERLAYMASK pour spécifier un index de masque de superposition dans le membre d’état de la structure TVITEM de l’élément. Vous devez également définir les bits TVIS_OVERLAYMASK dans le membre stateMask . Les index de masque de superposition sont basés sur un seul index ; un index de zéro indique qu’aucune image de superposition n’a été spécifiée.

Les images d’état sont stockées dans une liste d’images d’état distincte et identifiées par leur index. Pour spécifier la liste d’images d’état, envoyez un message TVM_SETIMAGELIST . Contrairement au contrôle d’affichage de liste, qui utilise un index de base unique pour identifier les images d’état, les images d’état de contrôle d’arborescence sont identifiées par un index de base zéro. Toutefois, un index de zéro indique que l’élément n’a pas d’image d’état. Par conséquent, l’image zéro ne peut pas être utilisée comme image d’état. Pour plus d’informations sur les états d’élément et les images d’état, consultez Vue d’ensemble des états des éléments d’arborescence.

Opérations glisser-déplacer

Un contrôle arborescence avertit la fenêtre parente lorsque l’utilisateur commence à faire glisser un élément. La fenêtre parente reçoit 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 lui accordant le style TVS_DISABLEDRAGDROP .

Vous obtenez une image à afficher lors d’une opération de glissement à l’aide du message TVM_CREATEDRAGIMAGE . Le contrôle arborescence crée une bitmap de glissement en fonction de l’étiquette de l’élément déplacé. Ensuite, le contrôle arborescence crée une liste d’images, y ajoute la bitmap et retourne le handle à la liste d’images.

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 à la fenêtre parente après le début de l’opération de glissement.

Si les éléments d’un contrôle d’arborescence doivent être les cibles des opérations de glisser-déplacer, vous devez savoir quand le pointeur de la souris se trouve sur un élément cible. Vous pouvez le savoir à l’aide du message TVM_HITTEST . Vous spécifiez l’adresse d’une structure TVHITTESTINFO qui contient les coordonnées actuelles du pointeur de la souris. Lorsque la fonction SendMessage retourne, la structure contient un indicateur indiquant l’emplacement du pointeur de la souris par rapport au contrôle d’arborescence. Si le pointeur se trouve sur un élément dans le contrôle arborescence, la structure contient é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 utilisant le message TVM_SETITEM pour définir l’état sur la valeur TVIS_DROPHILITED . Un élément avec cet état est dessiné dans le style utilisé pour indiquer une cible de glissement-déplacement.

messages de notification de contrôle Tree-View

Un contrôle d’arborescence envoie les messages de notification suivants à sa fenêtre parente sous la forme de messages WM_NOTIFY .

Notification Description
TVN_BEGINDRAG Signale le début d’une opération glisser-déplacer.
TVN_BEGINLABELEDIT   Signale le début de la modification d’étiquette sur place.
TVN_BEGINRDRAG Indique que le bouton droit de la souris a démarré une opération de glisser-déplacer.
TVN_DELETEITEM Signale la suppression d’un élément spécifique.
TVN_ENDLABELEDIT Signale la fin de la modification de l’étiquette.
TVN_GETDISPINFO Demande les informations dont le contrôle arborescence a besoin pour afficher un élément.
TVN_ITEMEXPANDED Indique que la liste d’éléments enfants d’un élément parent a été développée ou réduite.
TVN_ITEMEXPANDING Indique que la liste d’éléments enfants d’un élément parent est sur le point d’être développée ou réduite.
TVN_KEYDOWN Signale un événement de clavier.
TVN_SELCHANGED Signale que la sélection a changé d’un élément à un autre.
TVN_SELCHANGING Indique que la sélection est sur le point d’être modifiée d’un élément à un autre.
TVN_SETDISPINFO Notifie une fenêtre parente qu’elle doit mettre à jour les informations qu’elle gère pour un élément.

 

Traitement des messages de contrôle Tree-View par défaut

Cette section décrit le traitement des messages de fenêtre effectué par un contrôle arborescence. Les messages spécifiques aux contrôles d’arborescence sont abordés dans d’autres sections de ce document. Ils ne sont donc pas inclus ici.

Message Traitement effectué
WM_COMMAND Traite les EN_UPDATE et EN_KILLFOCUS les messages de notification de contrôle de modification et transfère toutes les autres notifications de contrôle de modification à la fenêtre parente. Il n'y a pas de valeur de retour.
WM_CREATE Alloue de la mémoire et initialise les structures de données internes. Elle retourne zéro en cas de réussite, ou -1 dans le cas contraire.
WM_DESTROY Libère toutes les ressources système associées au contrôle. Elle retourne zéro.
WM_ENABLE Active ou désactive le contrôle.
WM_ERASEBKGND Efface l’arrière-plan de la fenêtre à l’aide de la couleur d’arrière-plan actuelle pour le contrôle arborescence. Elle retourne TRUE.
WM_GETDLGCODE Retourne une combinaison des valeurs DLGC_WANTARROWS et DLGC_WANTCHARS.
WM_GETFONT Retourne le handle à la police d’étiquette actuelle.
WM_HSCROLL Fait défiler le contrôle d’arborescence. Elle retourne TRUE si le défilement se produit, ou FALSE dans le cas contraire.
WM_KEYDOWN Envoie le message de notification TVN_KEYDOWN à la fenêtre parente pour toutes les clés. Envoie le message de notification NM_RETURN (arborescence) lorsque l’utilisateur appuie sur la touche ENTRÉE. Il déplace le signe d’insertion lorsque l’utilisateur appuie sur les touches de direction ou sur les touches PAGE HAUT, PAGE BAS, ACCUEIL, FIN ou RETOUR ARRIÈRE. Il fait défiler le contrôle d’arborescence lorsque l’utilisateur appuie sur la touche Ctrl en combinaison avec ces touches. Elle retourne TRUE si une clé est traitée, ou FALSE dans le cas contraire.
WM_KILLFOCUS Repeint l’élément prioritaire, le cas échéant, et envoie un message de notification NM_KILLFOCUS (arborescence) à la fenêtre parente.
WM_LBUTTONDBLCLK Annule la modification d’étiquette et, si un élément a été double-cliqué, envoie le message de notification NM_DBLCLK (arborescence) à la fenêtre parente. Si la fenêtre parente retourne 0, le contrôle arborescence active l’état développé de l’élément, en envoyant à la fenêtre parente le TVN_ITEMEXPANDING et TVN_ITEMEXPANDED messages de notification. Il n'y a pas de valeur de retour.
WM_LBUTTONDOWN Active l’état développé si l’utilisateur a cliqué sur le bouton associé à un élément parent. Si l’utilisateur a cliqué sur une étiquette d’élément, le contrôle arborescence sélectionne et définit le focus sur l’élément. Si l’utilisateur déplace la souris avant de relâcher le bouton de la souris, le contrôle d’arborescence commence une opération de glisser-déplacer. Il n'y a pas de valeur de retour.
WM_PAINT Peint la région non valide du contrôle d’arborescence. Elle retourne zéro. Si le paramètre wParam n’est pas NULL, le contrôle suppose que la valeur est un handle pour un contexte d’appareil (HDC) et peint à l’aide de ce contexte d’appareil.
WM_RBUTTONDOWN Vérifie si un clic a été fait sur un élément et si une opération de glissement a commencé. Si l’opération a commencé, elle envoie un message de notification TVN_BEGINRDRAG à la fenêtre parente et met en surbrillance la cible de déplacement. Sinon, il envoie un message de notification NM_RCLICK (arborescence) à la fenêtre parente. Il n'y a pas de valeur de retour.
WM_SETFOCUS Repeint l’élément prioritaire, le cas échéant, et envoie un message de notification NM_SETFOCUS à la fenêtre parente.
WM_SETFONT Enregistre le handle de police spécifié et repeint le contrôle arborescence à l’aide de la nouvelle police.
WM_SETREDRAW Définit ou efface l’indicateur de redessination. Le contrôle d’arborescence est redessiné une fois l’indicateur de redessination défini. Elle retourne zéro.
WM_SIZE Recompute les variables internes qui dépendent de la taille de la zone cliente du contrôle d’arborescence. Elle retourne TRUE.
WM_STYLECHANGED Annule la modification d’étiquette et redessine le contrôle arborescence à l’aide des nouveaux styles. Elle retourne zéro.
WM_SYSCOLORCHANGE Redessine le contrôle d’arborescence à l’aide de la nouvelle couleur si l’indicateur de redessination est défini. Il n'y a pas de valeur de retour.
WM_TIMER Commence à modifier une étiquette d’élément. Si l’utilisateur clique sur l’étiquette de l’élément prioritaire, le contrôle arborescence définit un minuteur au lieu d’entrer immédiatement en mode édition. Le minuteur permet à l’arborescence d’éviter d’entrer en mode édition si l’utilisateur double-clique sur l’étiquette. Elle retourne zéro.
WM_VSCROLL Fait défiler le contrôle d’arborescence. Elle retourne TRUE si le défilement se produit, ou FALSE dans le cas contraire.

 

EXEMPLE : CustDTv illustre un dessin personnalisé dans un TreeView (Q248496)