Control de árbol MFC
1. Primero arrastre el control en la ventana.
2. Establecer propiedades:
Tiene línea: use líneas de puntos para vincular niveles de nodo
Tiene Buton: agregar botones para contraer y expandir
3. Establecer la colección de imágenes
3.1 SetImageList (CImageList * lista, macro de visualización normal)
3.1.1 El objeto CImageList se declara en el archivo .h y se reciclará si se usa en el montón
3.2 Crear crear (30, 30 xx bits de color, 4, 4)
3.3 añadir (HICON)
4. Agregar nodo
4.1 InsertItem (nombre de nodo, imagen de visualización, imagen seleccionada, nodo principal)
5. Establezca el nodo SelectItem predeterminado
// 1 Establecer el ícono // Lista CImageList; // La lista de íconos debe declararse como global, de lo contrario se eliminará después de ser colocada en el montón y utilizada. Debe colocarse en el archivo .h. //1.1 Preparar íconos HICON Íconos HICON [3] ; // Cargar recursos de iconos especificados por nIDResource desde archivos ejecutables icons [0] = AfxGetApp () -> LoadIconW (IDI_ICON2); iconos [1] = AfxGetApp () -> LoadIconW (IDI_ICON3); iconos [2] = AfxGetApp ( ) -> LoadIconW (IDI_ICON4); // Crea una colección de imágenes list.Create (30,30, ILC_COLOR32,4,4); // Agrega imágenes específicas para (int i = 0; i <3; i ++) { list .add (iconsThe [I]); } mTree.SetImageList (& List, TVSIL_NORMAL); // establecer 2 nombres de nodo, la imagen predeterminada, la imagen seleccionada muestra lo que HTREEITEM root = mTree.InsertItem (TEXT ("nodo raíz" ), 0, 0, 0); HTREEITEM padre = mTree.InsertItem (TEXT ("nodo padre"), 1,1, raíz); HTREEITEM sub1 = mTree.InsertItem (TEXT ("nodo hijo"), 2,2, padre); HTREEITEM sub2 = mTree.InsertItem (TEXT ("nodo secundario"), 2, 2, padre); // Establezca la opción predeterminada mTree.SelectItem (sub1);
6. Activar eventos para cambiar entre nodos
6.1, Obtener el elemento actual GetSelectedItem
6.2, obtenga el contenido GetItemText de acuerdo con el elemento
CMFC06TreeControlDlg vacío :: OnTvnSelchangedTree1 (NMHDR * pNMHDR, LRESULT * pResult) { LPNMTREEVIEW pNMTreeView = reinterpret_cast <LPNMTREEVIEW> (pNMHDR); // TODO: control de código de controlador de notificación Sube aquí * pResult = 0; // Obtener el manejador del elemento seleccionado en ese momento item = mTree.GetSelectedItem an HTREEITEM (); // encuentra el elemento de contenido de acuerdo con el identificador seleccionado CString name = mTree.GetItemText (item); el MessageBox (name, _T ("nombre")); }