2016-09-28 3 views
3

Привет, я хочу, чтобы разработать приложение, но я хочу добавить дерево с определенным внешним видом. Мне это удается, но появление того, что у меня есть, - это не то, что хотят мои клиенты. разработан с использованием MFC и C++.Как я могу создать TreeView как приложения Microsoft

Мое приложение выглядит следующим образом:

enter image description here

Я хочу, чтобы выглядеть следующим образом:

enter image description here

enter image description here

enter image description here

код я использую:

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

Я предпочитаю решение быть в MFC/C++, если это возможно, и не используя сторонние библиотеки.

+3

[Tree View] (https://msdn.microsoft.com/ ан-нас/библиотека/окна/настольные/bb759988.aspx). – IInspectable

ответ

5

Добавить зависимость в uxtheme.lib библиотеки, включает заголовок <Uxtheme.h>, вызовите функцию SetWindowTheme() после того, как вы создали контроль:

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

который даст свой контроль TreeView проводник Windows выглядеть и чувствовать себя. Намного сложнее, как вам нужно ввести свой собственный список изображений, а также использовать TreeView_SetImageList() макрос, чтобы прикрепить листы изображения на TreeView:

TreeView_SetImageList(hYourTreeviewHandle, hYourImagesHandle, TVSIL_NORMAL); 
+0

Привет, вы могли бы рассказать мне о том, как удалить точки также «очерченная линия между элементами». – Karim

+1

@Karim Удалите стили окна 'TVS_HASLINES' и' TVS_LINESATROOT' из вашего кода 'const DWORD dwViewStyle = ...'. Подробнее о стилях treeview можно найти на странице [MSDN] (https://msdn.microsoft.com/en-us/library/windows/desktop/bb760013 (v = vs.85) .aspx). –

+0

Спасибо, сработало. – Karim

6

Вам нужно несколько вещей, чтобы получить этот взгляд:

  1. Убедитесь, что ваш манифест приложения определяет COMCTL32 v6.
  2. Добавить вызов SetWindowTheme(hTreeView, L"explorer", NULL) после создания древовидного вида. Здесь hTreeView - это дескриптор окна дерева.