title: This program thows exception. Want to create program to display directory structure with tree control in mfc
body: <pre><code> **FileEnumTreeControl.cpp file**
  
  // FileEnumTreeControl.cpp : Defines the class behaviors for the 
     application.
  //
  
  #include "stdafx.h"
  #include "FileEnumTreeControl.h"
  #include "FileEnumTreeControlDlg.h"
  
  #ifdef _DEBUG
  #define new DEBUG_NEW
  #endif
  
  
  // CFileEnumTreeControlApp
  
  BEGIN_MESSAGE_MAP(CFileEnumTreeControlApp, CWinApp)
      ON_COMMAND(ID_HELP, &amp;CWinApp::OnHelp)
  END_MESSAGE_MAP()
  
  
  // CFileEnumTreeControlApp construction
  
  CFileEnumTreeControlApp::CFileEnumTreeControlApp()
  {
      // TODO: add construction code here,
      // Place all significant initialization in InitInstance
  }
  
  
  // The one and only CFileEnumTreeControlApp object
  
  CFileEnumTreeControlApp theApp;
  
  
  // CFileEnumTreeControlApp initialization
  
  BOOL CFileEnumTreeControlApp::InitInstance()
  {
      // InitCommonControlsEx() is required on Windows XP if an application
      // manifest specifies use of ComCtl32.dll version 6 or later to enable
      // visual styles.  Otherwise, any window creation will fail.
      INITCOMMONCONTROLSEX InitCtrls;
      InitCtrls.dwSize = sizeof(InitCtrls);
      // Set this to include all the common control classes you want to use
      // in your application.
      InitCtrls.dwICC = ICC_WIN95_CLASSES;
      InitCommonControlsEx(&amp;InitCtrls);
  
      CWinApp::InitInstance();
  
      AfxEnableControlContainer();
  
      // Standard initialization
      // If you are not using these features and wish to reduce the size
      // of your final executable, you should remove from the following
      // the specific initialization routines you do not need
      // Change the registry key under which our settings are stored
      // TODO: You should modify this string to be something appropriate
      // such as the name of your company or organization
      SetRegistryKey(_T("Local AppWizard-Generated Applications"));
  
      CFileEnumTreeControlDlg dlg;
      m_pMainWnd = &amp;dlg;
      INT_PTR nResponse = dlg.DoModal();
      if (nResponse == IDOK)
      {
          // TODO: Place code here to handle when the dialog is
          //  dismissed with OK
      }
      else if (nResponse == IDCANCEL)
      {
          // TODO: Place code here to handle when the dialog is
          //  dismissed with Cancel
      }
  
      // Since the dialog has been closed, return FALSE so that we exit the
      //  application, rather than start the application's message pump.
      return FALSE;
  }
   **FileEnumTreeControlDlg.cpp file**
  // FileEnumTreeControlDlg.cpp : implementation file
  //
  
  #include "stdafx.h"
  #include &lt;string&gt;
  #include &lt;iostream&gt;
  #include "FileEnumTreeControl.h"
  #include "FileEnumTreeControlDlg.h"
  #include&lt;windows.h&gt;
  #ifdef _DEBUG
  #define new DEBUG_NEW
  #endif
  
  // CFileEnumTreeControlDlg dialog
  
  
  
  
  CFileEnumTreeControlDlg::CFileEnumTreeControlDlg(CWnd* pParent /*=NULL*/)
      : CDialog(CFileEnumTreeControlDlg::IDD, pParent)
      , m_strTree(_T(""))
  {
      m_hIcon = AfxGetApp()-&gt;LoadIcon(IDR_MAINFRAME);
  }
  
  void CFileEnumTreeControlDlg::DoDataExchange(CDataExchange* pDX)
  {
      CDialog::DoDataExchange(pDX);
      DDX_Text(pDX, IDC_STATIC_TXT, m_strTree);
      DDX_Control(pDX, IDC_TREE1, m_treeCtrl);
  }
  
  BEGIN_MESSAGE_MAP(CFileEnumTreeControlDlg, CDialog)
      ON_WM_PAINT()
      ON_WM_QUERYDRAGICON()
      //}}AFX_MSG_MAP
  END_MESSAGE_MAP()
  
  
  // CFileEnumTreeControlDlg message handlers
  
  BOOL CFileEnumTreeControlDlg::OnInitDialog()
  {
      CDialog::OnInitDialog();
  
      // Set the icon for this dialog.  The framework does this automatically
      //  when the application's main window is not a dialog
      SetIcon(m_hIcon, TRUE);         // Set big icon
      SetIcon(m_hIcon, FALSE);        // Set small icon
      WIN32_FIND_DATA data;
      HTREEITEM hItem, hCar;
  
      HANDLE find=FindFirstFile(L"D:\\*",&amp;data);
      hItem = m_treeCtrl.InsertItem(L"D", TVI_ROOT);
      if(find!=INVALID_HANDLE_VALUE)
      {
          do
          {         
              hCar = m_treeCtrl.InsertItem(data.cFileName, hItem);
               if (data.dwFileAttributes &amp; FILE_ATTRIBUTE_DIRECTORY)
               {
                   WIN32_FIND_DATA data2;
                   wchar_t* dir=L"D:\\";
                   wcsncat(dir,data.cFileName,wcslen(data.cFileName)-4);  
                   wcsncat(dir,L"\\*",3); 
                   HANDLE find2=FindFirstFile(dir,&amp;data2);    
                   if(find2!=INVALID_HANDLE_VALUE)
                   {
                       do{
                           m_treeCtrl.InsertItem(data2.cFileName,hCar);
  
                       }while(FindNextFile(find2,&amp;data2));
                   }
                }
  
          }while(FindNextFile(find,&amp;data));
          FindClose(find);
      }
      // TODO: Add extra initialization here
  
      return TRUE;  // return TRUE  unless you set the focus to a control
  }
  
  // If you add a minimize button to your dialog, you will need the code below
  //  to draw the icon.  For MFC applications using the document/view model,
  //  this is automatically done for you by the framework.
  
  void CFileEnumTreeControlDlg::OnPaint()
  {
      if (IsIconic())
      {
          CPaintDC dc(this); // device context for painting
  
          SendMessage(WM_ICONERASEBKGND, reinterpret_cast&lt;WPARAM&gt;
           (dc.GetSafeHdc()), 0);
  
          // Center icon in client rectangle
          int cxIcon = GetSystemMetrics(SM_CXICON);
          int cyIcon = GetSystemMetrics(SM_CYICON);
          CRect rect;
          GetClientRect(&amp;rect);
          int x = (rect.Width() - cxIcon + 1) / 2;
          int y = (rect.Height() - cyIcon + 1) / 2;
  
          // Draw the icon
          dc.DrawIcon(x, y, m_hIcon);
      }
      else
      {
          CDialog::OnPaint();
      }
  }
  
  // The system calls this function to obtain the cursor to display while the 
   user drags
  //  the minimized window.
  HCURSOR CFileEnumTreeControlDlg::OnQueryDragIcon()
  {
      return static_cast&lt;HCURSOR&gt;(m_hIcon);
  }
  
  **FileEnumTreeControl.h : main header file for the PROJECT_NAME 
   application**
  //
  
  #pragma once
  
  #ifndef __AFXWIN_H__
      #error "include 'stdafx.h' before including this file for PCH"
  #endif
  
  #include "resource.h"       // main symbols
  
  
  // CFileEnumTreeControlApp:
  // See FileEnumTreeControl.cpp for the implementation of this class
  //
  
  class CFileEnumTreeControlApp : public CWinApp
  {
  public:
      CFileEnumTreeControlApp();
  
  // Overrides
      public:
      virtual BOOL InitInstance();
  
  // Implementation
  
      DECLARE_MESSAGE_MAP()
  };
  
  extern CFileEnumTreeControlApp theApp;
  </code></pre>
  
  <p><strong>FileEnumTreeControlDlg.h : header file</strong>
      //</p>
  
  <pre><code>#pragma once
  #include "afxcmn.h"
  
  
  // CFileEnumTreeControlDlg dialog
  class CFileEnumTreeControlDlg : public CDialog
  {
  // Construction
  public:
      CFileEnumTreeControlDlg(CWnd* pParent = NULL);  // standard constructor
  
  // Dialog Data
      enum { IDD = IDD_FILEENUMTREECONTROL_DIALOG };
  
      protected:
      virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
  
  
  // Implementation
  protected:
      HICON m_hIcon;
  
      // Generated message map functions
      virtual BOOL OnInitDialog();
      afx_msg void OnPaint();
      afx_msg HCURSOR OnQueryDragIcon();
      DECLARE_MESSAGE_MAP()
  public:
      CString m_strTree;
      CTreeCtrl m_treeCtrl;
  };
  </code></pre>
  
  <p><strong>FileEnumTreeControl.h : main header file for the PROJECT_NAME application</strong></p>
  
  <pre><code>#pragma once
  
  #ifndef __AFXWIN_H__
      #error "include 'stdafx.h' before including this file for PCH"
  #endif
  
  #include "resource.h"       // main symbols
  
  
  // CFileEnumTreeControlApp:
  // See FileEnumTreeControl.cpp for the implementation of this class
  //
  
  class CFileEnumTreeControlApp : public CWinApp
  {
  public:
      CFileEnumTreeControlApp();
  
  // Overrides
      public:
      virtual BOOL InitInstance();
  
  // Implementation
  
      DECLARE_MESSAGE_MAP()
  };
  
  extern CFileEnumTreeControlApp theApp;
  </code></pre>
  
  <p><em>This program is created in mfc and everything working just fine but i am not able to expand inner directories as unable to give complete path to FindFirstFile() please tell me how to pass dynamic path to FindFirstFile()</em></p>