Przegląd stanów elementu formantu drzewa
Każdy element w kontrolce drzewa (CTreeCtrl) ma bieżący stan. Na przykład element można wybrać, wyłączyć, rozwinąć i tak dalej. W większości przypadków kontrolka drzewa automatycznie ustawia stan elementu w celu odzwierciedlenia akcji użytkownika, takich jak wybór elementu. Można jednak również ustawić stan elementu przy użyciu funkcji składowej SetItemState i pobrać bieżący stan elementu przy użyciu funkcji składowej GetItemState . Pełną listę stanów elementów można znaleźć w temacie Tree-View Control Constants in the Windows SDK (Stałe kontrolki widoku drzewa w zestawie Windows SDK).
Bieżący stan elementu jest określony przez parametr nState . Kontrolka drzewa może zmienić stan elementu, aby odzwierciedlić akcję użytkownika, na przykład wybrać element lub ustawić fokus na element. Ponadto aplikacja może zmienić stan elementu, aby wyłączyć lub ukryć element albo określić obraz nakładki lub obraz stanu.
Po określeniu lub zmianie stanu elementu parametr nStateMask określa bity stanu do ustawienia, a parametr nState zawiera nowe wartości dla tych bitów. Na przykład poniższy przykład zmienia bieżący stan elementu nadrzędnego (określonego przez hParentItem) w CTreeCtrl
obiekcie (m_treeCtrl
) na 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);
Innym przykładem zmiany stanu byłoby ustawienie obrazu nakładki elementu. Aby to osiągnąć, nStateMask musi zawierać wartość, a nState musi zawierać TVIS_OVERLAYMASK
jeden indeks obrazu nakładki przesunięty w lewo osiem bitów przy użyciu makra INDEXTOOVERLAYMASK. Indeks może mieć wartość 0, aby nie określić obrazu nakładki. Obraz nakładki musi zostać dodany do listy obrazów nakładki drzewa przez poprzednie wywołanie funkcji CImageList::SetOverlayImageImage . Funkcja określa jeden indeks obrazu do dodania; jest to indeks używany w makrze INDEXTOOVERLAYMASK. Kontrolka drzewa może mieć maksymalnie cztery obrazy nakładki.
Aby ustawić obraz stanu elementu, nStateMask musi zawierać TVIS_STATEIMAGEMASK
wartość, a nState musi zawierać jeden indeks obrazu stanu przesunięty w lewo 12 bitów przy użyciu makra INDEXTOSTATEIMAGEMASK . Indeks może mieć wartość 0, aby nie określić obrazu stanu. Aby uzyskać więcej informacji na temat obrazów nakładek i stanów, zobacz Listy obrazów kontrolki drzewa.