Partilhar via


Visão geral dos estados de item de controle da árvore

Cada item em um controle de árvore (CTreeCtrl) tem um estado atual. Por exemplo, um item pode ser selecionado, desabilitado, expandido e assim por diante. Na maioria das vezes, o controle de árvore define automaticamente o estado de um item para refletir as ações do usuário, como a seleção de um item. No entanto, também é possível definir o estado de um item usando a função membro SetItemState e recuperar o estado atual de um item usando a função membro GetItemState. Para obter uma lista completa dos estados de item, consulte Constantes de controle de exibição de árvore no SDK do Windows.

O estado atual de um item é especificado pelo parâmetro nState. Um controle de árvore pode alterar o estado de um item para refletir uma ação do usuário, como selecionar o item ou definir o foco para o item. Além disso, um aplicativo pode alterar o estado de um item para desabilitar ou ocultar o item ou para especificar uma imagem de sobreposição ou uma imagem de estado.

Ao especificar ou alterar o estado de um item, o parâmetro nStateMask especificará os bits de estado que deverão ser definidos e o parâmetro nState conterá os novos valores para esses bits. Por exemplo, o exemplo a seguir altera o estado atual de um item pai (especificado por hParentItem) em um objeto CTreeCtrl (m_treeCtrl) para 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);

Outro exemplo de alteração do estado é definir a imagem de sobreposição de um item. Para fazer isso, nStateMask deve incluir o valor TVIS_OVERLAYMASK e nState deve incluir o índice baseado em um da imagem de sobreposição deslocada oito bits para a esquerda usando a macro INDEXTOOVERLAYMASK. O índice poderá ser 0 para não especificar imagens de sobreposição. A imagem de sobreposição deve ser adicionada à lista de imagens de sobreposição do controle de árvore por uma chamada anterior para a função CImageList::SetOverlayImage. A função especifica o índice de base um da imagem a ser adicionada, esse é o índice usado com a macro INDEXTOOVERLAYMASK. Um controle de árvore poderá ter até quatro imagens de sobreposição.

Para definir a imagem de estado de um item, nStateMask deverá incluir o valor TVIS_STATEIMAGEMASK e nState deverá incluir o índice de base um da imagem de estado deslocado 12 bits para a esquerda usando a macro INDEXTOSTATEIMAGEMASK. O índice poderá ser 0 para não especificar imagens de estado. Para obter mais informações sobre sobreposição e imagens de estado, consulte Listas de imagens de controle de árvore.

Confira também

Usando CTreeCtrl
Controles