다음을 통해 공유


상태 이미지 인덱스를 사용하여 작업하는 방법

트리 뷰 컨트롤에서 상태 이미지 인덱스 설정 및 검색 방법에 대해 혼동하는 경우가 많습니다. 다음 예제에서는 상태 이미지 인덱스를 설정하고 검색하는 적절한 방법을 보여 줍니다. 이 예제에서는 트리 뷰 컨트롤에서 '체크 해제'와 '체크' 상태로 두 개의 상태 이미지 인덱스만 있다고 가정합니다. 애플리케이션에 둘 이상이 포함된 경우 이러한 함수를 수정하여 해당 사례를 처리해야 합니다.

알아야 할 사항

기술

  • 윈도우 제어

필수 조건

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