Общие сведения о состояниях элемента древовидного элемента управления
Каждый элемент в элементе управления "Дерево" (CTreeCtrl) имеет текущее состояние. Например, элемент можно выбрать, отключить, развернуть и т. д. В большинстве случаев элемент управления деревом автоматически задает состояние элемента для отражения действий пользователя, таких как выбор элемента. Однако можно также задать состояние элемента с помощью функции-члена SetItemState и получить текущее состояние элемента с помощью функции-члена GetItemState. Полный список состояний элементов см. в разделе "Константы элементов" в пакете SDK для Windows.
Текущее состояние элемента указывается параметром nState . Элемент управления деревом может изменить состояние элемента, чтобы отразить действие пользователя, например выбор элемента или задание фокуса на элемент. Кроме того, приложение может изменить состояние элемента, чтобы отключить или скрыть элемент или указать изображение наложения или изображение состояния.
При указании или изменении состояния элемента параметр nStateMask указывает, какие биты состояния следует задать, а параметр nState содержит новые значения для этих битов. Например, следующий пример изменяет текущее состояние родительского элемента (указанного hParentItem) в объекте (m_treeCtrl
) TVIS_EXPANDPARTIAL
на CTreeCtrl
:
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 . Индекс может быть 0, чтобы не указывать изображение наложения. Изображение наложения должно быть добавлено в список изображений дерева дерева, выполнив предыдущий вызов функции CImageList::SetOverlayImageImage. Функция задает одноуровневый индекс добавляемого изображения; это индекс, используемый с макросом INDEXTOOVERLAYMASK. Элемент управления "Дерево" может содержать до четырех изображений наложения.
Чтобы задать изображение состояния элемента, nStateMask должен включать TVIS_STATEIMAGEMASK
значение, а nState должен включать одноуровневый индекс изображения состояния, смещенный влево 12 бит с помощью макроса INDEXTOSTATEIMAGEMASK . Индекс может иметь значение 0, чтобы не указывать образ состояния. Дополнительные сведения о наложении и изображениях состояний см. в списках образов элементов управления деревом.