2016-09-28 4 views
3

Hallo im Training, um eine App zu entwickeln, aber ich möchte einen Baum mit einem bestimmten Aussehen hinzufügen, dass ich Erfolg habe, aber das Aussehen von was ich habe, ist nicht, was meine Kunden die App wollen wird mit MFC und C++ entwickelt.Wie könnte ich eine TreeView wie Microsoft-Apps erstellen

Meine app sieht wie folgt aus:

enter image description here

enter image description here

:

enter image description here

ich es so aussehen wollen

Der Code Ich verwende:

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); 

ziehe ich die Lösung in MFC/C++, wenn möglich zu sein und nicht von einem fremden Bibliotheken verwenden.

+3

[Baumansicht] (https://msdn.microsoft.com/ de-us/library/windows/desktop/bb759988.aspx). – IInspectable

Antwort

5

In Abhängigkeit der uxtheme.lib Bibliothek gehören die <Uxtheme.h> Header, rufen Sie die SetWindowTheme() Funktion, nachdem Sie die Kontrolle erstellt haben:

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

die Ihre TreeView-Steuerelement ein Windows Explorer aussehen und sich anfühlen geben wird. Die Dinge sind viel mehr beteiligt, wie Sie benötigen, um Ihre eigene Bildliste zu liefern und auch die TreeView_SetImageList() Makro verwenden, um die Bildlisten Strukturansichts anbringt:

TreeView_SetImageList(hYourTreeviewHandle, hYourImagesHandle, TVSIL_NORMAL); 
+0

Hallo könntest du mir sagen, wie man die Punkte entfernt auch "die gestrichelte Linie zwischen den Elementen" – Karim

+1

@Karim Entfernen Sie die 'TVS_HASLINES' und' TVS_LINESATROOT' Fenster Stile aus Ihrem 'const DWORD dwViewStyle = ...' Code. Weitere Informationen zu den Treeview-Stilen finden Sie auf der [MSDN-Seite] (https://msdn.microsoft.com/en-us/library/windows/desktop/bb760013 (v = vs.85) .aspx). –

+0

Danke, es hat funktioniert. – Karim

6

Sie müssen ein paar Dinge mit diesen Blick zu erhalten:

  1. Stellen Sie sicher, dass Ihre Anwendung manifestieren comctl32 v6 angibt.
  2. Fügen Sie einen Anruf zu SetWindowTheme(hTreeView, L"explorer", NULL) hinzu, nachdem Sie die Strukturansicht erstellt haben. Hier ist hTreeView das Fensterhandle der Baumansicht.
Verwandte Themen