文件产生时间秒编辑框,变量类型BOOL,名称m_CSECOND;
文件产生时间年编辑框,变量类型BOOL,名称m_CYEAR;
修改文件修改时间检查框,变量类型BOOL,名称m_MODIFY;
文件修改时间日编辑框,变量类型BOOL,名称m_MDAY;
文件修改时间时编辑框,变量类型BOOL,名称m_MHOUR;
文件修改时间分编辑框,变量类型BOOL,名称m_MMINUTE;
文件修改时间月编辑框,变量类型BOOL,名称m_MMONTH;
文件修改时间秒编辑框,变量类型BOOL,名称m_MSECOND;
文件修改时间年编辑框,变量类型BOOL,名称m_MYEAR;
修改文件属性检查框,变量类型BOOL,名称m_PROPERTY;
文件隐藏属性检查框,变量类型BOOL,名称m_HIDE;
文件只读属性检查框,变量类型BOOL,名称m_READ;
文件存档属性检查框,变量类型BOOL,名称m_SAVE;
文件系统属性检查框,变量类型BOOL,名称m_SYSTEM;
执行更改的按钮,点击该按钮后执行选定的更改操作。
以上成员变量可在对话类的构造函数中用当前系统时间予以初始化。
---- 2、在对话类中加入以下成员:
char filter[16];
int ChangeTheProperty(LPSTR Filename,BYTE bFlag=0) ;
其中成员变量filter用以存放带通配符的文件名。
成员函数ChangeTheProperty中实现了带通配符的文件的属性的改变,考虑到要遍历子目录,
该函数采用了递归调用,并请注意参数bFlag,其缺省值为0,
1表示调用发生自子目录。其实现如下:
int CChangePropertyDlg::Change
TheProperty(LPSTR FileName,BYTE bFlag)
{
////存放路径
char pathname[MAX_PATH];
////存放全路径文件名
char allname[MAX_PATH];
////初始化pathname
int num=strlen(FileName);
for(int i=num-1;i>=0;i--){
if(FileName[i]==''\\'')
break;
}
if(i==-1)
return 0;
strncpy(pathname,FileName,i+1);
pathname[i+1]=''\0'';
////查找并修改所有子目录下符合条件的文件
DWORD stat=0;
WIN32_FIND_DATA fileinfo;
if(bFlag){
char DFileName[MAX_PATH];
strcpy(DFileName,pathname);
strcat(DFileName,"*.*");
HANDLE handle=FindFirstFile
(DFileName, &fileinfo);
if(handle==INVALID_HANDLE_VALUE)
return 0;
do{
if(fileinfo.cFileName[0]==''.'')
continue;
strcpy(allname,pathname);
strcat(allname,fileinfo.cFileName);
//检取文件属性,可以使用
fileinfo的dwFileAttributes成员
stat=GetFileAttributes(allname);
if(stat==0xffffffff){
MessageBox("警告,获取文件信息时出错!!",
allname, MB_OK|MB_ICONINFORMATION);
continue;
}
//如果
查询到的是文件夹
if(stat&FILE_ATTRIBUTE_
DIRECTORY && m_DIRECTORY){
char temp[MAX_PATH];
sprintf(temp,"%s%s\\%s",
pathname,
fileinfo.cFileName,filter);
//递归改变该子目录下的文件
ChangeTheProperty(temp,1);
}
}while(FindNextFile
(handle, &fileinfo));
FindClose(handle);
}
////查找并