168上位机VC MFC获取系统文件的大小及类型
168上位机VC MFC获取系统文件的大小及类型
功能展示
在文件的相应操作中文件大小及类型的获取也是常用到的功能,当前例程实现的获取指定文件的大小,文件类型,及系统当前所有文件类型的获取后的保;效果如图; 要点提示 指定文件类型的获取可以用函数SHGetFileInfo() 函数原型为WINSHELLAPI DWORD WINAPISHGetFileInfo( LPCTSTR pszPath, DWORD dwFileAttributes, SHFILEINFO FAR *psfi,UINT cbFileInfo, UINT uFlags ); pszPath为指定文件的路径, dwFileAttributes为接收信息的结构体SHFILEINFO,cbFileInfo 为接收的字节数以形式sizeof(SHFILEINFO)填充; uFlags 为要获取的信息类型当前例程为SHGFI_TYPENAME;
当前系统全部文件类型的获取可以用函数RegEnumKey()具体的使用参考例程学习;
实现功能 1.新建基于对话框的应用程序 2.拖拽一静态文件ID修改为IDC_NOTE用于显示操作结果信息; 拖拽一编辑框ID为IDC_EDIT1用于显示要处理的文件路径 ;
拖拽几个按钮控件,依次实现文件打开,文件大小,文件类型,系统文件类型获取功能; - void CGkbc8Dlg::OnOpen()
- {
- CFileDialog Dlg(TRUE,NULL,NULL,NULL,NULL,this);
- if(Dlg.DoModal()==IDCANCEL)
- return;
- SetDlgItemText(IDC_EDIT1,Dlg.GetPathName());
- }
- void CGkbc8Dlg::OnFilesize()
- {
- CString sPath;
- GetDlgItemText(IDC_EDIT1,sPath);
- CFileStatus Status;
- CString sFileSize;
- if(CFile::GetStatus(sPath,Status))
- {
- sFileSize.Format("文件大小:%d 字节",Status.m_size);
- SetDlgItemText(IDC_NOTE,sFileSize);
- }
- }
复制代码- void CGkbc8Dlg::OnType()
- {
- CString sPath;
- GetDlgItemText(IDC_EDIT1,sPath);
- CString sTypeScript;
- SHFILEINFO SFileInfo;
- SHGetFileInfo(sPath,NULL,&SFileInfo,sizeof(SHFILEINFO),SHGFI_TYPENAME);
- sTypeScript=SFileInfo.szTypeName;
- sPath="文件类型描述:";
- sPath +=sTypeScript;
- SetDlgItemText(IDC_NOTE,sPath);
- }
复制代码我们来演示下功能实现的整个过程
|