Utilisation des index d’images d’état

Il existe souvent une confusion quant à la façon de définir et de récupérer 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’y a que deux index d’image d’état dans le contrôle d’arborescence, désactivés et activés. Si votre application en contient plus de deux, ces fonctions devront ê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 case activée 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 case activée 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