Comment pourrais-je créer un TreeView comme les applications Microsoft

Salut, je suis entrain de développer une application, mais je veux append un arbre avec une apparence spécifique. Je réussis à le faire, mais l’apparence de ce que j’ai n’est pas ce que mes clients veulent, l’application est développée avec MFC et C ++.

Mon application ressemble à ceci:

entrer la description de l'image ici

Je veux que ça ressemble à ça:

entrer la description de l'image ici

entrer la description de l'image ici

entrer la description de l'image ici

Le code que j’utilise:

CRect rectDummy(0,0,200,600); //rectDummy.SetRectEmpty(); CTreeCtrl m_wndClassView; const DWORD dwViewStyle = WS_CHILD | WS_VISIBLE | TVS_HASLINES | TVS_LINESATROOT | TVS_HASBUTTONS | WS_CLIPSIBLINGS | WS_CLIPCHILDREN; if (!m_wndClassView.Create(dwViewStyle, rectDummy, &m_wndView, 2)) { TRACE0("Failed to create Class View\n"); return -1; // fail to create } HTREEITEM hRoot = m_wndClassView.InsertItem(_T("System Summary"), 0, 0); m_wndClassView.SetItemState(hRoot, TVIS_BOLD, TVIS_BOLD); HTREEITEM hClass = m_wndClassView.InsertItem(_T("Hardwre Resources"), 1, 1, hRoot); hClass = m_wndClassView.InsertItem(_T("Components"), 1, 1, hRoot); hClass = m_wndClassView.InsertItem(_T("Software Enviroment"), 1, 1, hRoot); 

Je préfère que la solution soit en MFC / C ++ si possible et ne pas utiliser de bibliothèques tierces.

Ajoutez une dépendance à la bibliothèque uxtheme.lib , incluez l’en-tête , appelez la fonction SetWindowTheme () après avoir créé le contrôle:

 SetWindowTheme(hYourTreeviewHandle, L"Explorer", NULL); 

ce qui donnera à votre contrôle hiérarchique un aspect Windows Explorer. Les choses sont beaucoup plus complexes car vous devez fournir votre propre liste d’images et utiliser la macro TreeView_SetImageList () pour joindre les listes d’images à l’arborescence:

 TreeView_SetImageList(hYourTreeviewHandle, hYourImagesHandle, TVSIL_NORMAL); 

Vous avez besoin de deux choses pour obtenir ce look:

  1. Assurez-vous que le manifeste de votre application spécifie comctl32 v6.
  2. Ajoutez un appel à SetWindowTheme(hTreeView, L"explorer", NULL) après avoir créé l’arborescence. Ici, hTreeView est le handle de fenêtre de l’arborescence.