HANDLE hfile;//查找文件句柄
	WIN32_FIND_DATA wfdata;//文件信息结构
	BOOL IsOver=false;//查找过程结束标志
	CString strname;//文件名
	CString strfull;//全路径
	hfile=FindFirstFile((LPCTSTR)("*.*"),&wfdata);//查找第一个文件
	if(hfile==INVALID_HANDLE_VALUE)
		IsOver=true;//查找过程结束
	while(!IsOver)
	{
		strname.Format("%s",wfdata.cFileName);//获取找到的文件名
		strfull=Curdir+"\\"+strname;//全路径
		if((wfdata.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)&&(wfdata.cFileName[0]!=_TEXT(‘.‘)))//
		{
			SetCurrentDirectory(wfdata.cFileName);
			FindFile(strfull);//递归调用
			SetCurrentDirectory("..");//返回当前目录
		}
		else if(wfdata.cFileName[0]!=_TEXT(‘.‘))
			m_fileList.AddString(strfull);
		IsOver=!FindNextFile(hfile,&wfdata);//查找下一个文件
	}
	FindClose(hfile);//关闭句柄
原文:http://www.cnblogs.com/lucky_bing/p/5208311.html