Compartir a través de


Información general sobre los estados de los elementos de control de árbol

Cada elemento de un control de árbol (CTreeCtrl) tiene un estado actual. Por ejemplo, un elemento se puede seleccionar, deshabilitar, expandir, etc. En su mayor parte, el control de árbol establece automáticamente el estado de un elemento para reflejar las acciones del usuario, como la selección de un elemento. Sin embargo, también puede establecer el estado de un elemento mediante la función miembro SetItemState y recuperar el estado actual de un elemento mediante la función miembro GetItemState. Para obtener una lista completa de los estados de los elementos, vea Constantes de control de vista de árbol en Windows SDK.

El parámetro nState especifica el estado actual de un elemento. Un control de árbol puede cambiar el estado de un elemento para reflejar una acción del usuario, como seleccionar el elemento o establecer el foco en el elemento. Además, una aplicación podría cambiar el estado de un elemento para deshabilitar u ocultar el elemento o especificar una imagen de superposición o una imagen de estado.

Al especificar o cambiar el estado de un elemento, el parámetro nStateMask especifica los bits de estado que se van a establecer y el parámetro nState contiene los nuevos valores de esos bits. Por ejemplo, en el ejemplo siguiente se cambia el estado actual de un elemento primario (especificado por hParentItem) de un objeto 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);

Otro ejemplo de cambio del estado sería establecer la imagen de superposición de un elemento. Para ello, nStateMask debe incluir el valor TVIS_OVERLAYMASK y nState debe incluir el índice basado en uno de la imagen de superposición desplazado a la izquierda ocho bits mediante la macro INDEXTOOVERLAYMASK. El índice puede ser 0 para especificar ninguna imagen de superposición. La imagen de superposición debe haberse agregado a la lista de imágenes de superposición del control de árbol mediante una llamada anterior a la función CImageList::SetOverlayImage. La función especifica el índice basado en uno de la imagen que se va a agregar; este es el índice utilizado con la macro INDEXTOOVERLAYMASK. Un control de árbol puede tener hasta cuatro imágenes superpuestas.

Para establecer la imagen de estado de un elemento, nStateMask debe incluir el valor TVIS_STATEIMAGEMASK y nState debe incluir el índice basado en uno de la imagen de estado desplazado a la izquierda 12 bits mediante la macro INDEXTOSTATEIMAGEMASK. El índice puede ser 0 para especificar ninguna imagen de estado. Para obtener más información sobre la superposición y las imágenes de estado, vea Listas de imágenes de control de árbol.

Consulte también

Uso de CTreeCtrl
Controles