给100分
我现在分太多了
我现在分太多了
解决方案 »
- 请问MFC高手们,如何刷新CTreeCtrl控件?
- 关于DLL的编译错误问题
- 数据转换(十六进制的串转换成十进制的数)再取后四位有效位
- VS2008开发的软件,怎么打包
- 如何取得picture控件在对话框中的坐标位置? 在线等,急!!!
- 以知一个精确时间(年.月.日.时.分.秒),如何根据输入的秒数,精确计算出新的时间时间? 如何比较两个精确时间的大小?
- XP下右下角的提示是怎么出来的, 比如“找到新硬件”
- 哪位高手能够解决我的CSocket的通信问题!!!!!!
- 怎么使用SetLastError(dwErrorCode)函数自定义错误
- 怎样来扫描端口,help me...
- 窗口启动的问题
- 关于更改表名的SQL的语句的问题---------在线等候,正确立刻给分!!!
{
WIN32_FIND_DATA filedata;
HANDLE filehandle;
MSG msg;
CString st2;
m_iCounter=0;
int i=0; filehandle=FindFirstFile(directory+m_strFileName,&filedata); if(filehandle!=INVALID_HANDLE_VALUE)
{
do
{
SHFILEINFO stFileInfo;
SHGetFileInfo(directory+filedata.cFileName,0,&stFileInfo,sizeof(stFileInfo),SHGFI_ICON);
HICON hIcon;
hIcon=stFileInfo.hIcon;
m_image.Add(hIcon);
m_nItem++; m_StringListItem.AddTail(filedata.cFileName);
m_StringList.AddTail(directory+filedata.cFileName); if(filedata.nFileSizeHigh==0)
{
CString m_strSize;
m_strSize.Format("%d%s",(filedata.nFileSizeLow+1023)/1024," K");
m_StringListS.AddTail(m_strSize);
}
else
{
double filesize=(MAXDWORD* filedata.nFileSizeHigh)+filedata.nFileSizeLow;
CString m_strSize;
m_strSize.Format("%d%s",filesize/1024.0," K");
m_StringListS.AddTail(m_strSize);
} nCounter2++; char szFileTime[64];
FILETIME strFileTime;
SYSTEMTIME strSysTime;
FileTimeToLocalFileTime( &filedata.ftCreationTime, &strFileTime );
FileTimeToSystemTime( &strFileTime, &strSysTime );
sprintf( szFileTime,"%4d/%2d/%2d %2d:%02d:%02d",
strSysTime.wYear, strSysTime.wMonth,
strSysTime.wDay, strSysTime.wHour,
strSysTime.wMinute, strSysTime.wSecond );
m_StringListT.AddTail(szFileTime); }while(FindNextFile(filehandle,&filedata));
FindClose(filehandle); }
filehandle=FindFirstFile(directory+"*.*",&filedata);
if(filehandle!=INVALID_HANDLE_VALUE)
{
do
{
if((filedata.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)!=0
&&CString(filedata.cFileName)!="."
&&CString(filedata.cFileName)!="..")
{
FindFilesInDirectory(directory+filedata.cFileName+"\\");
}
if (::PeekMessage(&msg, m_hWnd, WM_KEYFIRST,WM_KEYLAST, PM_REMOVE))
{
if(msg.message == WM_KEYDOWN && msg.wParam == VK_ESCAPE)
break;
} }while(FindNextFile(filehandle,&filedata));
FindClose(filehandle);
} return;}
// 函数:FindFile()
// 说明:在指定目录中查找指定文件
// ========================================================================================== //BOOL SearchFile(char *filename)
{
char strPath[10]="0"; // 文件路径
char strFile[10]="0"; // 文件名
char strTemp[10]="0";
unsigned int PathLay = 0;
unsigned int strLen = 0;
unsigned int i; long Handle;
struct _finddata_t filestruct; // 将路径和文件名分开
strLen = strlen(filename);
for(i=strLen-1;i>=0;i--)
{
if(filename[i]=='\\')
break;
strTemp[strLen-i-1]=filename[i];
}
strTemp[strLen-i]='\0'; strLen = strlen(strTemp);
for(i=0;i<strLen;i++)
strFile[i] = strTemp[strLen-i-1];
strFile[i]='\0'; for(i=0;i<(strlen(filename)-strlen(strFile)-1);i++)
{
strPath[i]=filename[i];
if(filename[i]=='\\')
PathLay++;
}
strPath[i]='\0';
PathLay++; // 进入指定目录
_chdir(strPath); // 查找文件
Handle=_findfirst("*",&filestruct);
if(!strcmp(filestruct.name,strFile))
{
for(i=0;i<PathLay;i++)
chdir("..");
return TRUE;
} while(!_findnext(Handle,&filestruct))
if(!strcmp(filestruct.name,strFile))
{
for(i=0;i<PathLay;i++)
chdir("..");
return TRUE;
} // 没有找到指定文件
for(i=0;i<PathLay;i++)
_chdir("..");
return FALSE;
}上面是一个查找的函数,只要稍微修改就可以满足你的要求,他支持路径。
{
CString strPath = s_szPathParam;
strPath += FILE_DES_BMP_DIR;//常量路径,自已定义的
CString findfile=""; CFileFind finder;
strPath += _T("\\*.*");
BOOL bWorking = finder.FindFile(strPath);
while (bWorking)
{
bWorking = finder.FindNextFile();
// skip . and .. files; otherwise, we'd
// recur infinitely!
if (finder.IsDots())
continue;
findfile = finder.GetFilePath();
::DeleteFile(findfile);//得到文件名,删除:)
} finder.Close();}
用法: 路径,扩展名(可以只查某类),是否包含子目录
本函数计算所有文件大小
把以下部分改改:将ff.ff_fname取到自己定义的数组之类中
while (!done)
{ size+=ff.ff_fsize;
DWORD ScanFile(char *FromPath,char *FileExt,int SubDir)
{ struct ffblk ff;
int done;
DWORD size=0;
char frompath[256],topath[256];
if (SubDir)
{ strcpy(frompath,FromPath);
strcat(frompath,"\\*.*");
done=findfirst(frompath,&ff,FA_DIREC);
while (!done)
{ if (ff.ff_name[0]=='.')
{ done=findnext(&ff);
continue;
}
strcpy(frompath,FromPath);
strcat(frompath,"\\");
strcat(frompath,ff.ff_name);
size+=ScanFile(frompath,FileExt,SubDir);
done=findnext(&ff);
}
}
strcpy(frompath,FromPath);
strcat(frompath,"\\");
strcat(frompath,FileExt);
done=findfirst(frompath,&ff,FA_ARCH);
n_copy=0;
while (!done)
{ size+=ff.ff_fsize;
done=findnext(&ff);
}
return size;
}