VC ++实现 对文件的 隐藏, 只读 ,创建时间 , 最后修改时间 ,最后访问时间 属性的修改

来源:互联网 发布:linux命令终端log输出 编辑:程序博客网 时间:2024/05/22 08:24

考完六级心情大好,去论坛逛了逛,做了几个作业,总结下用到的函数和方法


整体功能如下:


其中还有获取当前系统时间并格式化输出的功能,界面上没有体现出来。


窗口界面控件统计及关联变量如下:

编辑框:ID:  IDC_EDIT_FILEPATH   


属性设置:

      只读:CheckBox  控件  关联变量:BOOL   m_IsReadOnly      隐藏  :CheckBox   关联变量:BOOL m_IsHidden  


文件时间自定义:

     创建时间:Date Time Picker 控件   关联变量:控件变量  m_CreateTime

     创建时间:Date Time Picker 控件   关联变量:控件变量  m_ModifyTime


为框架类添加成员变量: CString  m_filepath


功能函数:


一,让对话框支持通过拖放方式选择文件

1,首先设置对话框的:Accept Files: True


2, 对话框.h中(消息映射表中)添加
    afx_msg void OnDropFiles(HDROP hDropInfo);

3, .cpp,消息map中添加
    ON_WM_DROPFILES()

void CXXXXDlg::OnDropFiles(HDROP hDropInfo) {    // TODO: Add your message handler code here and/or call default        CString filename;        DragQueryFile(hDropInfo,0,filename.GetBuffer(512),512);        filename.ReleaseBuffer();        m_filepath = filename;   SetDlgItemText(IDC_EDIT_FILEPATH,m_filepath);    CDialog::OnDropFiles(hDropInfo);} 



二,点击选择按钮,弹出文件选择对话框,设置在列表中显示的文件类型

void CXXXXDlg::OnBnClickedBtnSelectfile(){// TODO: 在此添加控件通知处理程序代码CFileDialog fileDlg(true);fileDlg.m_ofn.lpstrTitle = "选择你要设置的文件";fileDlg.m_ofn.lpstrFilter = "Executeable File(*.exe)\0*.exe\0All Files(*.*)\0*.*\0\0";if(IDOK==fileDlg.DoModal()){m_filepath = fileDlg.GetPathName();SetDlgItemText(IDC_EDIT_FILEPATH,m_filepath);}}



三,接收用户的选择,单击“设置属性“按钮设置文件的只读和隐藏属性

void CXXXXDlg::OnBnClickedBtnSetattr(){// TODO: 在此添加控件通知处理程序代码UpdateData();if(m_filepath == ""){MessageBox("请先选择文件","错误",MB_OK);return;}DWORD FileAttr = GetFileAttributes(m_filepath); //获取文件默认属性if(INVALID_FILE_ATTRIBUTES == FileAttr ){//获取属性失败(文件不存在)MessageBox("获取文件信息失败!","错误",MB_OK);return;}else{if(m_IsReadOnly){//若选择了checkbox的只读则追加只读属性SetFileAttributes(m_filepath,FileAttr |  FILE_ATTRIBUTE_READONLY); //和原来的属性按位与}if(m_IsHidden){//若选择了checkbox的隐藏则追加隐藏属性SetFileAttributes(m_filepath,FileAttr | FILE_ATTRIBUTE_HIDDEN);}    CTime t = CTime::GetCurrentTime();//获得当前系统时间CString strTime =t.Format("%A, %B %d, %Y,%H:%M:%S");//格式化得到的时间MessageBox("设置文件属性成功!",strTime,MB_OK);}}



四,文件时间自定义

void Cxiao7_2Dlg::OnBnClickedBtnModify(){// TODO: 在此添加控件通知处理程序代码UpdateData(true);SYSTEMTIME CreateTime,ModifyTime;m_CreateTime.GetTime(&CreateTime);//从界面DateTimePicker控件接受用户选选择的时间m_ModifyTime.GetTime(&ModifyTime);if(m_filepath != ""){FILETIME fCreateTime,fModifyTime;//系统时间转换为文件时间,注意:只能转换为文件时间才能设置其时间SystemTimeToFileTime(&CreateTime,&fCreateTime);SystemTimeToFileTime(&CreateTime,&fModifyTime);//创建CFile对象,CFile是MFC封装好的类,用SDK的同学注意一下CFile file(m_filepath,CFile::modeWrite);//设置文件时间,四个参数:文件句柄,创建时间,最后访问时间,最后修改时间SetFileTime(file,&fCreateTime,NULL,&fModifyTime);MessageBox("修改文件时间成功!","提示",MB_OK);}else{MessageBox("请先选择文件","错误",MB_OK);}}



注意此处设置的时间比实际要提前一天



源代码:


http://download.csdn.net/detail/eldn__/4920173




原创粉丝点击