2016-09-28 35 views
3

嗨训练开发一个应用程序,但我想添加一个具有特定外观的树我成功地做到这一点,但我有什么不是我的客户想要的应用程序的外观是使用MFC和C++开发的。我怎么能创建一个像微软应用程序树视图

我的应用程序看起来像这样:

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

[树视图(https://msdn.microsoft.com/ EN-US /库/窗/台式机/ 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从'const DWORD dwViewStyle = ...'代码中删除'TVS_HASLINES'和'TVS_LINESATROOT'窗口样式。有关TreeView样式的更多信息,请参见[MSDN页面](https://msdn.microsoft.com/en-us/library/windows/desktop/bb760013(v = vs.85).aspx)。 – 2016-09-28 13:57:35

+0

感谢它的工作。 – Karim

6

你需要几件事情让这个样子:

  1. 确保您的应用程序清单指定COMCTL32 V6。
  2. 在创建树视图后添加对SetWindowTheme(hTreeView, L"explorer", NULL)的调用。这里hTreeView是树视图的窗口句柄。
相关问题