我怎样才能创建像Microsoft应用程序一样的TreeView

Kar*_*m H 3 c++ windows winapi mfc window

嗨我培训开发一个应用程序,但我想添加一个具有特定外观的树我成功做到这一点,但我所拥有的外观不是我的客户想要的应用程序是使用MFC和C++开发的.

我的应用程序如下所示:

在此输入图像描述

我希望它看起来像这样:

在此输入图像描述

在此输入图像描述

在此输入图像描述

我正在使用的代码:

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);
Run Code Online (Sandbox Code Playgroud)

如果可能的话,我更喜欢使用MFC/C++的解决方案,而不是使用第三方库.

Dav*_*nan 6

你需要一些东西才能看出来:

  1. 确保您的应用程序清单指定了comctl32 v6.
  2. SetWindowTheme(hTreeView, L"explorer", NULL)创建树视图后添加调用.这hTreeView是树视图的窗口句柄.


小智 6

添加依赖项到uxtheme.lib库,包括<Uxtheme.h>标题,在创建控件后调用SetWindowTheme()函数:

SetWindowTheme(hYourTreeviewHandle, L"Explorer", NULL);
Run Code Online (Sandbox Code Playgroud)

这将使您的treeview控件具有Windows资源管理器的外观.当您需要提供自己的图像列表并使用TreeView_SetImageList()宏将图像列表附加到树视图时,事情就更复杂了:

TreeView_SetImageList(hYourTreeviewHandle, hYourImagesHandle, TVSIL_NORMAL);
Run Code Online (Sandbox Code Playgroud)