65.9K
CodeProject is changing. Read more.
Home

WTL CFileTreeCtrl class

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.19/5 (13 votes)

Apr 23, 2003

1 min read

viewsIcon

70893

downloadIcon

2594

Implements a tree control similar to the left hand side of Windows Explorer

Sample Image - wtlfiletreectrl.jpg

Credit and Acknowledgments

The original author of FileTree MFC control is PJ Naughter. This control and article can be found at http://www.codeproject.com/treectrl/filetree.asp

Overview

I needed a FileTree control to use in an ATL/WTL project and I decided to port MFC Control to WTL. The following ATL files contain the port:

  • FileFind.h/FileFind.cpp - Contain the CFileFind class and implementation for WTL which performs local file searches
  • WtlFileTreeCtrl.h/WtlFileTreeCtrl.cpp - Contain the CWtlFileTreeCtrl class and implementation for WTL

How to use the control in your WTL App:

  1. Create a WTL Project
  2. Design the dialog and add the Tree control
  3. Add the WtlFileTreeCtrl.h header file to your project
  4. Assign a CWtlFileTreeCtrl to your tree.
  5. In OnInitDialog(), subclass tree control (CWtlFileTreeCtrl) to ID using the SubclassWindow method.
  6. In your dialog, don't forget to add the macro REFLECT_NOTIFICATIONS which allows the CWtlFileTreeCtrl to get messages like TVN_ITEMEXPANDING.
#include "WtlFileTreeCtrl.h"


//...


class CMainDlg : public CDialogImpl<CMainDlg>
{
     BEGIN_MSG_MAP(CMainDlg)
          ...
          MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
          REFLECT_NOTIFICATIONS()
     END_MSG_MAP()
     ...
     LRESULT OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, 
         LPARAM /*lParam*/, BOOL& /*bHandled*/);
     ...
     CWtlFileTreeCtrl m_Tree;
     ...
};

//...


LRESULT CMainDlg::OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, 
        LPARAM /*lParam*/, BOOL& /*bHandled*/) 

{
     ...
     m_Tree.SubclassWindow( ::GetDlgItem( m_hWnd, IDC_TREE1 ) );
     ...
}

Requirements

You will require the WTL Libraries, these can be downloaded from the microsoft site.

Note - This control uses the STL std::string class and the STL std::vector template class.

Contacting the Author

Ilya Solnyshkin, E-mail: isolnyshkin@yahoo.com, Web: http://www.printsniffer.com/