MFC中使用listctrl控件,怎么把文件夹中的所有文件的属性写入其中

MFC中使用listctrl控件,如何把文件夹中的所有文件的属性写入其中
如上,比如我想把D盘里面我的文档文件夹里面的所有的TXT文件的属性,如文件名,大小,类型,修改时间写入到listctrl控件中。有知道的高手能贴个代码,学习一下。最后在listctrl中显示的效果像下面的图一样。
MFC中使用listctrl控件,怎么把文件夹中的所有文件的属性写入其中
------解决思路----------------------

CString strPath = "D\\*.*"
WIN32_FIND_DATA fd;
HANDLE hfind;
hfind=FindFirstFile(strPath,&fd);
if(hfind!=INVALID_HANDLE_VALUE)
{
 do
 {
      if(fd.dwFileAttributes!=FILE_ATTRIBUTE_DIRECTORY)
      { //文件名
         fd.cFileName;//文件名
         fd.ftLastWriteTime;//最后一次修改时间
         //类型自己判断
        //文件长度自己算
       fd.nFileSizeHigh 文件长度高三十二位
       fd.nFileSizeLow 文件长度低三十二位
       }
       else
       {//文件夹
        同上
       }
 }
 while(FindNextFile(hfind,&fd));
}

------解决思路----------------------

// 插入第一行记录
m_lst.InsertItem(0,_T("Defult.xml"));
m_lst.SetItemText(0,1,_T("2014/07/04 20:52"));
m_lst.SetItemText(0,2,_T("XML文件"));
m_lst.SetItemText(0,2,_T("1KB"));


如果是一个列表,则定义一个索引变量nIndex,将上面的0换成nIndex即可,注意列表控件的索引从0开始:

for ( int nIndex = 0; nIndex < nSzie; nIndex++ )

------解决思路----------------------
/************************************************************************/
/* ErgodicFolder 文件夹遍历  (显示文件信息)         */
/************************************************************************/
void  C文件遍历器Dlg::ErgodicFolder(LPCTSTR lpStrPath)
{
CString IsShow;
GetDlgItemText(IDC_EDIT1,IsShow);
if (IsShow == "")
{
MessageBox(_T("路径不能为空!!!"));
return;
}
m_List.DeleteAllItems();//清除内容

CString StrBootPath(lpStrPath);
StrBootPath += _T("\\");
 CFileFind finder;
 CString strExtension;
 GetDlgItemText(IDC_COMBO1,strExtension);
 BOOL bWorking = finder.FindFile(StrBootPath + strExtension);
 /* if (!bWorking)
 {
 MessageBox(_T("没有该类型的文件!!!"));
 return;
 }*/
 while (bWorking)
 {
  bWorking = finder.FindNextFile();
  if (finder.IsDots())
         continue;
  if(finder.IsDirectory()){
  ErgodicFolder(finder.GetFilePath());
  }else{
  CString FileName = finder.GetFileName();//文件名
  ULONGLONG FileLen = finder.GetLength();//文件大小
//  BOOL IsOnly = finder.IsReadOnly();//只读?

  CTime tempTime;
  CString str,str1,str2;
  if (finder.GetCreationTime(tempTime))//创建时间
  {
  str = tempTime.Format(_T("%c"));
  }
  if (finder.GetLastWriteTime(tempTime))//写入时间
  {
  str1= tempTime.Format(_T("%c"));
  }
  if (finder.GetLastAccessTime(tempTime))//访问时间
  {
  str2 = tempTime.Format(_T("%c"));
  }
  //将获得属性显示在listctrl中
 int Index = m_List.InsertItem(0xffff,_T(""));
 m_List.SetItemText(Index,0,FileName);

 CString filelen,IsOk;
 filelen.Format(_T("%I64u"),FileLen);
 m_List.SetItemText(Index,1,filelen);

 IsOk.Format(_T("%c"), finder.IsReadOnly()  ? 'Y' : 'N');
 m_List.SetItemText(Index,2,IsOk);

 m_List.SetItemText(Index,3,str);
 m_List.SetItemText(Index,4,str1);
 m_List.SetItemText(Index,5,str2);
  }
 }
}