Vue d'ensemble des états d'élément de contrôle d'arborescence

Chaque élément d’un contrôle d’arborescence (CTreeCtrl) a un état actuel. Par exemple, un élément peut être sélectionné, desactivé, développé, etc. Dans la plupart des cas, l'arborescence définit automatiquement l'état d'un élément de sorte à refléter toutes les actions de l'utilisateur, comme la sélection d'un élément. Toutefois, vous pouvez également définir l’état d’un élément à l’aide de la fonction membre SetItemState et récupérer l’état actuel d’un élément à l’aide de la fonction membre GetItemState . Pour obtenir la liste complète des états d’élément, consultez les constantes de contrôle d’arborescence dans le Kit de développement logiciel (SDK) Windows.

L’état actuel d’un élément est spécifié par le paramètre nState . Un contrôle d'arborescence peut modifier l'état d'un élément de sorte à refléter une action d'utilisateur, telle que sélectionner l'élément ou définir le 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 paramètre nStateMask spécifie les bits d’état à définir et le paramètre nState contient les nouvelles valeurs de ces bits. Par exemple, l’exemple suivant modifie l’état actuel d’un élément parent (spécifié par hParentItem) dans un CTreeCtrl objet (m_treeCtrl) en TVIS_EXPANDPARTIAL:

TVITEM curItem;
HTREEITEM hParentItem;

hParentItem = m_TreeCtrl.GetSelectedItem();

//modify the parent item to keep the '+' sign
curItem.mask = TVIF_STATE | TVIF_HANDLE;
curItem.hItem = hParentItem;
curItem.state = TVIS_EXPANDPARTIAL;
curItem.stateMask = TVIS_EXPANDPARTIAL;
m_TreeCtrl.SetItem(&curItem);

Un autre exemple de modification d'état consisterait à définir l'image de superposition d'un élément. Pour ce faire, nStateMask doit inclure la TVIS_OVERLAYMASK valeur et nState doit inclure l’index de base unique de l’image de superposition décalée à huit bits à l’aide de la macro INDEXTOOVERLAYMASK . L'index peut correspondre à 0 pour spécifier qu'il n'y a aucune image de superposition. L’image de superposition doit avoir été ajoutée à la liste des images de superposition du contrôle d’arborescence par un appel précédent à la fonction CImageList ::SetOverlayImage . La fonction spécifie l’index à base unique de l’image à ajouter ; il s’agit de l’index utilisé avec la macro INDEXTOOVERLAYMASK. Un contrôle d’arborescence peut contenir jusqu’à quatre images de superposition.

Pour définir l’image d’état d’un élément, nStateMask doit inclure la TVIS_STATEIMAGEMASK valeur et nState doit inclure l’index de base unique de l’image d’état décalée à gauche 12 bits à l’aide de la macro INDEXTOSTATEIMAGEMASK. L'index peut correspondre à 0 pour spécifier qu'il n'y a aucune image d'état. Pour plus d’informations sur la superposition et les images d’état, consultez Les listes d’images de contrôle d’arborescence.

Voir aussi

Utilisation de CTreeCtrl
Contrôles