Elementos primario y secundario del control de árbol
Cualquier elemento de un control de árbol (CTreeCtrl) puede tener una lista de subelementos, que se denominan elementos secundarios, asociados a él. Un elemento que tiene uno o varios elementos secundarios se denomina elemento primario. Un elemento secundario se muestra debajo de su elemento primario y se le aplica sangría para indicar que está subordinado al elemento primario. Un elemento que no tiene ningún elemento primario está en la parte superior de la jerarquía y se denomina elemento raíz.
En cualquier momento dado, el estado de la lista de elementos secundarios de un elemento primario se puede expandir o contraer. Cuando se expande el estado, los elementos secundarios se muestran debajo del elemento primario. Cuando se contrae, no se muestran los elementos secundarios. La lista alterna automáticamente entre los estados expandidos y contraídos cuando el usuario hace doble clic en el elemento primario o, si el elemento primario tiene el estilo TVS_HASBUTTONS, cuando el usuario hace clic en el botón asociado con el elemento primario. Una aplicación puede expandir o contraer los elementos secundarios mediante la función miembro Expandir.
Puede agregar un elemento a un control de árbol al llamar a la función miembro InsertItem. Esta función devuelve un manipulador del tipo HTREEITEM, que identifica de forma única el elemento. Al agregar un elemento, debe especificar el manipulador del elemento primario del nuevo elemento. Si especifica NULL o el valor TVI_ROOT en lugar de un manipulador de elemento primario en la estructura TVINSERTSTRUCT o el parámetro hParent, el elemento se agrega como elemento raíz.
Un control de árbol envía un mensaje de notificación de TVN_ITEMEXPANDING cuando la lista de elementos secundarios de un elemento primario está a punto de expandirse o contraerse. La notificación le ofrece la oportunidad de evitar el cambio o establecer cualquier atributo del elemento primario que dependa del estado de la lista de elementos secundarios. Después de cambiar el estado de la lista, el control de árbol envía un mensaje de notificación TVN_ITEMEXPANDED.
Cuando se expande una lista de elementos secundarios, se le aplicará sangría en relación con el elemento primario. Puede establecer la cantidad de sangría mediante la función miembro SetIndent o recuperar la cantidad actual mediante la función miembro GetIndent.