如何使用狀態影像索引

通常會對如何在樹狀檢視控制項中設定和取出狀態影像索引產生混淆。 下列範例示範設定和抓取狀態影像索引的適當方法。 這些範例假設樹狀檢視控制項中只有兩個狀態影像索引,未核取並核取。 如果您的應用程式包含兩個以上的應用程式,則必須修改這些函式來處理該案例。

您必須知道的事項

技術

必要條件

  • C/C++
  • Windows 消費者介面程式設計

指示

設定 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 控制項中的自訂繪圖