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:
Je veux que ça ressemble à ça:
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:
SetWindowTheme(hTreeView, L"explorer", NULL)
après avoir créé l’arborescence. Ici, hTreeView
est le handle de fenêtre de l’arborescence.