我即时培训开发应用程序,但我想添加一个具有特定外观的树,我成功地做到了这一点,但我所拥有的不是我的客户想要的应用程序是使用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);
如果可能,我更喜欢使用MFC / C ++解决方案而不使用第三方库。
答案 0 :(得分:6)
你需要做几件事才能看出来:
SetWindowTheme(hTreeView, L"explorer", NULL)
的调用。这里hTreeView
是树视图的窗口句柄。答案 1 :(得分:6)
在uxtheme.lib
库中添加依赖项,包含<Uxtheme.h>
标题,在创建控件后调用SetWindowTheme()函数:
SetWindowTheme(hYourTreeviewHandle, L"Explorer", NULL);
这将使您的treeview控件具有Windows资源管理器的外观。由于您需要提供自己的图像列表并使用TreeView_SetImageList()宏将图像列表附加到树视图,因此事情更加复杂:
TreeView_SetImageList(hYourTreeviewHandle, hYourImagesHandle, TVSIL_NORMAL);