Condividi tramite


Panoramica degli stati degli elementi del controllo Tree

Ogni elemento in un controllo struttura ad albero (CTreeCtrl) dispone di uno stato corrente. Ad esempio, un elemento può essere selezionato, disabilitato, espanso, e così via. In genere, il controllo struttura ad albero imposta automaticamente lo stato di un elemento per riflettere le azioni dell'utente, come la selezione di un elemento. Tuttavia, è anche possibile impostare lo stato di un elemento utilizzando la funzione membro SetItemState e recuperare lo stato corrente di un elemento utilizzando la funzione membro GetItemState. Per un elenco completo degli stati degli elementi, vedere Costanti del controllo di visualizzazione ad albero in Windows SDK.

Lo stato corrente di un elemento è specificato dal parametro nState. Un controllo struttura ad albero può modificare lo stato di un elemento per riflettere un'azione dell'utente, come selezionare l'elemento oppure impostare lo stato attivo sull'elemento. Inoltre, un'applicazione può modificare lo stato di un elemento per disabilitare o nascondere l'elemento o per specificare un'immagine o un'immagine di stato sovrapposte.

Quando si specifica o si modifica lo stato di un elemento, il parametro nStateMask specifica quali bit di stato impostare e il parametro nState contiene i nuovi valori per questi bit. Ad esempio, nell'esempio seguente viene modificato lo stato corrente di un elemento padre (specificato da hParentItem) in un oggetto CTreeCtrl (m_treeCtrl) a 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);

Un altro esempio di modifica dello stato è quello di impostare l'immagine sovrapposta di un elemento. A tale scopo, nStateMask deve includere il valore TVIS_OVERLAYMASK e nState deve includere l'indice in base uno di un'immagine sovrapposta effettuando il left shift di otto bit utilizzando la macro INDEXTOOVERLAYMASK. L'indice può essere 0 per non specificare un'immagine sovrapposta. L'immagine sovrapposta deve essere aggiunta all'elenco di controllo di struttura ad albero delle immagini sovrapposte da una chiamata precedente alla funzione CImageList::SetOverlayImage. La funzione specifica l'indice in base uno dell'immagine da aggiungere; si tratta dell'indice utilizzato con la macro INDEXTOOVERLAYMASK. Un controllo struttura ad albero può contenere fino a quattro immagini sovrapposte.

Per impostare l'immagine di stato di un elemento, nStateMask deve includere il valore TVIS_STATEIMAGEMASK e nState deve includere l'indice in base uno dell'immagine di stato effettuando il left shift di 12 bit utilizzando la macro INDEXTOSTATEIMAGEMASK. L'indice può essere 0 per non specificare un'immagine di stato. Per ulteriori informazioni sulla sovrapposizione e le immagini di stato, vedere Elenchi di immagini del controllo struttura ad albero.

Vedere anche

Riferimenti

Utilizzo di CTreeCtrl

Concetti

Controlli (MFC)