樹狀目錄控制項目狀態概觀
樹狀結構控制項中的每個專案 ( CTreeCtrl ) 都有目前的狀態。 例如,項目可選取、停用、展開等等。 在大部分的情況下,樹狀目錄控制項會自動設定項目的狀態以反映使用者動作,例如選擇項目。 不過,您也可以使用 SetItemState 成員函式來設定專案的狀態,並使用 GetItemState 成員函式擷取專案的 目前狀態。 如需專案狀態的完整清單,請參閱 Windows SDK 中的樹狀檢視控制項常數 。
專案的目前狀態是由 nState 參數指定。 樹狀目錄控制項可能會變更項目的狀態來反映自訂動作,例如選取項目或為項目設定焦點。 此外,應用程式可變更項目的狀態以停用或隱藏項目,或指定重疊影像或狀態影像。
當您指定或變更專案的狀態時, nStateMask 參數會指定要設定的狀態位,而 nState 參數會包含這些位的新值。 例如,下列範例會將 物件 m_treeCtrl
中父專案的目前狀態(由 hParentItem 指定) CTreeCtrl
變更為 TVIS_EXPANDPARTIAL
:
TVITEM curItem;
HTREEITEM hParentItem;
hParentItem = m_TreeCtrl.GetSelectedItem();
//modify the parent item to keep the '+' sign
curItem.mask = TVIF_STATE | TVIF_HANDLE;
curItem.hItem = hParentItem;
curItem.state = TVIS_EXPANDPARTIAL;
curItem.stateMask = TVIS_EXPANDPARTIAL;
m_TreeCtrl.SetItem(&curItem);
變更狀態的另一個範例是設定項目的重疊影像。 若要達成此目的,nStateMask 必須包含 TVIS_OVERLAYMASK
值,而 nState 必須使用 INDEXTOOVERLAYMASK 宏,包含重迭影像的一個基底索引,而該重迭影像的左移位為 8 位 。 索引可為 0,表示不指定重疊影像。 重迭影像必須由先前呼叫 CImageList::SetOverlayImage 函式,新增至樹狀結構控制項的重迭影像清單。 函式會指定要新增之影像的一個型索引;這是與 INDEXTOOVERLAYMASK 宏搭配使用的索引。 樹狀目錄控制項有四個重疊影像。
若要設定專案的狀態影像,nStateMask 必須包含 TVIS_STATEIMAGEMASK
值,而 nState 必須使用 INDEXTOSTATEIMAGEMASK 宏,包含狀態影像的一個基底索引,而狀態影像的位移為 12 位 。 索引可為 0,表示不指定狀態影像。 如需重迭和狀態影像的詳細資訊,請參閱 樹狀結構控制影像清單 。