Tree List Control


Desktop-as-a-Service Designed for Any Cloud ? Nutanix Frame

The accompanying code is an implementation of a tree view, combined with a list view, for the Windows API. The view is compatible to the tree control of the common controls. It allows the user to set colors, text, and icons for each item separately. An MFC class for the view is also implemented.


  • The window messages are compatible with the tree control of the common controls.
  • Alternating colors are provided for each line.
  • The color, style, and icon could be set for each item separately.
  • An MFC class is also implemented (CTreeCtrl is the base class).
  • An index access is implemented so that you can get the item of a line.

The main source code is in the TreeListWnd.cpp file. The MFC class is in the TreeListCtrl.cpp file.

This demo was written by Anton Zechner.



  • VBA Implementation

    Posted by Zoltan on 03/21/2018 08:57am

    Hello, ist there any posibility to use this in a VBA Project?

  • HitTest not working

    Posted by real_skydiver on 03/24/2014 06:49am

    I receive random HTREEITEM results when I use 'HitTest' in 'OnContextMenu' - but never the one I really clicked on. Without that function the control is pretty useless because a control is supposed to offer interaction between data und user.

  • Column width does not update

    Posted by Egon Broquist on 12/17/2012 12:57pm

    Trying to change the column width and the column format but it does not work. SetColumnWidth(1,100); // No change col.mask = LVCF_TEXT | LVCF_FMT | LVCF_WIDTH; col.pszText = _T("Test"); col.fmt = LVCFMT_RIGHT; col.cx = 100; SetColumn(1,&col) // No change

  • ATL modification

    Posted by Sergey Kozlov on 04/25/2012 10:25am

    Could you make the same using ATL?

    • human

      Posted by Anton Zechner on 08/30/2012 07:57pm

      Sorry, i am not interrested on ATL, aund i have no time for this

  • help..

    Posted by ykc7859 on 04/24/2009 08:38am

    How to hide listheader?

    • Look on my homepage

      Posted by xyz007 on 05/22/2009 04:08pm

      Hi, you find the actual sources of the control on my homepage http://members.inode.at/anton.zechner/az/TreeList.en.htm Use the extended style TVS_EX_HIDEHEADERS. (see at CTreeListCtrl.chm "Extended Styles")

  • New bug

    Posted by haoziqi on 12/24/2008 05:37pm

    An error occurs when using function InsertItem insert a item after an existing item.

    • Use the actual source code

      Posted by xyz007 on 01/04/2009 06:42pm

      Please use the actual on my homepage: http://members.inode.at/anton.zechner/az/TreeList.en.htm

  • Bug in Vista

    Posted by googlejaps on 12/16/2008 02:41pm

    When using the treelist (version from http://members.inode.at /anton.zechner/az/TreeList.htm) the list doesn't update well in Vista. When I collapse and then expand the items in the tree, the text in the 2nd and 3rd columns are not updated right. See the screenshot at: http://jvmeerman.googlepages.com/TreeViewBug.jpg. The right screen shows the tree as it should look like. The left screen shows the tree after collapsing and expanding. I've tested this in XP and in Vista. In XP it works fine, in Vista this problem occurrs. On resize the tree is refreshed and it shows correct again.

    • Reply

      Posted by xyz007 on 01/04/2009 06:45pm

      I have posted a new version on my homepage. In this version i can't reproduce this problem on vista. http://members.inode.at/anton.zechner/az/TreeList.en.htm

  • some modify

    Posted by shixopen on 08/18/2008 11:54am

    my english is very poor.. cry...

    • Thanks

      Posted by xyz007 on 09/01/2008 09:45pm

      Thanks for the hints. I will post it on my homepage.

    • some modify

      Posted by shixopen on 08/18/2008 12:11pm

      line 8514:   	case WM_MOUSEWHEEL:
      line 8575:      case WM_HSCROLL:
      line 8539:      case WM_VSCROLL:
      add:  (for edit can't move)
      if (pData->uEditItem)  return 0;
      line 5260:    return pData->pItemPos[uPos+1];
      --->          return pData->pItemPos[uPos];
      line 5373:    return pData->pItemPos[uPos-1];
      if ( uPos < 2 ) return 0;
      return pData->pItemPos[uPos-2];
      when have big image
      line 10197:     sButton.bottom	= sArea.bottom;
      --->            sButton.bottom	= iYpos + pData->iFontHeight;
      when pData->uScrollX > 0, "..."error
      line 10211:  if(sArea.left+pEntry->iTextPixels>=sArea.right)
      -->          if(sArea.left+pEntry->iTextPixels >= sArea.right -pData->uScrollX)
      line 10215:   iSize  = sArea.right-sArea.left;
      -->           iSize  = sArea.right-pData->uScrollX-sArea.left -2;

  • Can I use this code in an internal project

    Posted by anuruddha_g on 01/02/2008 07:46am

    Hi, I was looking for a tree list control to be used in a support tool, which is being used inside my organization. Can I use the source files for my purporse? In a previous comment I found that if one is using this code, the application should be published as well. Does the same apply for my situation? (The tool I intend to use this treelist concentrates highly on software developing practices within the company and I dont see any use of this tool outside the organization even if published.) Thanks

    • In none commecial programms

      Posted by xyz007 on 02/05/2008 03:20pm

      Hi You can use it, if you don't sell your programm. In the ohter case you must publish the source of your program. Note: The newes sources are on my homepage. I have fixed some bugs, and new features are implemented. http://members.inode.at/anton.zechner/az/TreeList.htm

  • Bugs

    Posted by pyabo on 06/20/2007 01:03am

    Hello, I found 2 bugs: - In TreeListInsertItem when you look to find a new handle for the item you do: for(;;uPos++) { if(uPos>pData->uTreeItemsMax)uPos=1; if(pItems[uPos]==NULL)break; } but uPos should be tested for >= because in the function TreeListGetItem you test: if(uItem>=pData->uTreeItemsMax)return 0; So if there is an item that has exactly the handle equal to uTreeItemsMax you cannot get the data associated to it. - Second: the tooltip window is set as top-level and you see its creation in the application bar. - Another thing: is this control GPL or LGPL license? Thanks, Pablo Yabo

    • I have all fixed

      Posted by xyz007 on 06/29/2007 09:13pm

      Hi Thank you for your hints.
      I have fixed the bugs in TreeListV5.zip, or on my HomePage:

      The code is unter GPL. Comercial users must publish thier code, or make an aggrement with me.

  • Loading, Please Wait ...

  • You must have javascript enabled in order to post comments.

Leave a Comment
  • Your email address will not be published. All fields are required.

Most Popular Programming Stories

More for Developers

RSS Feeds

Thanks for your registration, follow us on our social networks to keep up-to-date