Partager via


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 d’arborescence. 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’existe que deux index d’image d’état dans le contrôle tree-view, décochés et activés. Si votre application contient plus de deux, ces fonctions doivent être modifiées pour gérer ce cas.

Ce que vous devez savoir

Technologies

Conditions préalables

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

Les 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);
  }