Utilisation des index d’image d’état

Il existe souvent une confusion quant à la définition et à la récupération de l’index d’image d’état dans un contrôle tree-view. Les exemples suivants illustrent la méthode appropriée pour définir et récupérer l’index d’image d’état. Les exemples supposent qu’il n’y a que deux index d’image d’état dans le contrôle arborescence, désactivés et activés. Si votre application contient plus de deux, ces fonctions doivent être modifiées pour gérer ce cas.

Bon à savoir

Technologies

Prérequis

  • C/C++
  • programmation de l’interface utilisateur Windows

Instructions

Définir l’état de vérification d’un élément Tree-View

L’exemple suivant montre comment définir l’état de vérification d’un élément d’arborescence.

  BOOL TreeView_SetCheckState(HWND hwndTreeView, HTREEITEM hItem, BOOL fCheck)
  {
      TVITEM tvItem;

      tvItem.mask   = TVIF_HANDLE | TVIF_STATE;
      tvItem.hItem  = hItem;
      tvItem.stateMask  = TVIS_STATEIMAGEMASK;

      // Image 1 in the tree-view check box image list is the unchecked box. 
      // Image 2 is the checked box.

      tvItem.state = INDEXTOSTATEIMAGEMASK((fCheck ? 2 : 1));

      return TreeView_SetItem(hwndTreeView, &tvItem);
  }

Récupérer l’état de vérification d’un élément Tree-View

L’exemple suivant montre comment récupérer l’état de vérification d’un élément d’arborescence.

  BOOL TreeView_GetCheckState(HWND hwndTreeView, HTREEITEM hItem)
  {
      TVITEM tvItem;

      // Prepare to receive the desired information.
      tvItem.mask   = TVIF_HANDLE | TVIF_STATE;
      tvItem.hItem  = hItem;
      tvItem.stateMask  = TVIS_STATEIMAGEMASK;

      // Request the information.
      TreeView_GetItem(hwndTreeView, &tvItem);

      // Return zero if it's not checked, or nonzero otherwise.
      return ((BOOL)(tvItem.state >> 12) - 1);
  }

Utilisation de contrôles Tree-View

L’exemple CustDTv illustre un dessin personnalisé dans un contrôle Tree-View