如何使用状态图像索引

通常,如何在树视图控件中设置和检索状态图像索引会产生混乱。 下面的示例演示了设置和检索状态图像索引的正确方法。 这些示例假定在树视图控件中只有两个状态图像索引,并取消选中并选中。 如果你的应用程序包含两个以上的函数,则需要修改这些函数以应对这种情况。

需要了解的事项

技术

必备组件

  • C/C++
  • Windows用户界面编程

Instructions

设置 Tree-View 项的复选状态

下面的示例演示如何设置树视图项的复选状态。

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

检索 Tree-View 项的复选状态

下面的示例演示如何检索树视图项的复选状态。

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

使用 Tree-View 控件

CustDTv 示例演示了 Tree-View 控件中的自定义绘图