fileinfo.cpp

来自「所有压缩格式的压缩解压缩。」· C++ 代码 · 共 89 行

CPP
89
字号
#include "stdafx.h"
#include "fileinfo.h"

////////////////////////////////
CString GetFileExt(LPCTSTR lpszFilePath)
{
	TCHAR szExt[_MAX_EXT];
	_tsplitpath(lpszFilePath, NULL, NULL, NULL, szExt);
	return CString(szExt);
}
CString GetFileName(LPCTSTR lpszFullName)
{
	TCHAR szFName[_MAX_FNAME];
	TCHAR szExt[_MAX_EXT];
	_tsplitpath(lpszFullName, NULL, NULL, szFName, szExt);
	CString sz=szFName;
	return sz+szExt;
}
int GetFileIcon(LPCTSTR lpszFileName,BOOL IsDirectory,BOOL bSelected)
{
	SHFILEINFO    sfi;

	DWORD dwAttributes=(IsDirectory)?
				FILE_ATTRIBUTE_DIRECTORY : FILE_ATTRIBUTE_ARCHIVE;
	UINT uFlags=SHGFI_SYSICONINDEX|SHGFI_USEFILEATTRIBUTES;
	if (bSelected) uFlags|=SHGFI_OPENICON;

	SHGetFileInfo(lpszFileName, 
					dwAttributes,
					&sfi,
					sizeof(SHFILEINFO),
					uFlags);

	return sfi.iIcon;
}
CString GetFileTypeName(LPCTSTR lpszFileName,BOOL IsDirectory)
{
	SHFILEINFO    sfi;

	DWORD dwAttributes=(IsDirectory)?
				FILE_ATTRIBUTE_DIRECTORY : FILE_ATTRIBUTE_ARCHIVE;
	UINT uFlags=SHGFI_TYPENAME |SHGFI_USEFILEATTRIBUTES;

	SHGetFileInfo(lpszFileName, 
					dwAttributes,
					&sfi,
					sizeof(SHFILEINFO),
					uFlags);
	if (sfi.szTypeName[0])
		return CString(sfi.szTypeName);
	else
	{
		CString sz=GetFileExt(lpszFileName);
		sz.Delete(0);sz.MakeUpper();
		sz+=" 文件";
		return sz;
	}
}
///////////////////////////////////////////////////////
void DelDirTree(LPCTSTR lpszDirectory)
{
	CFileFind ff;
	CString fn(lpszDirectory);

	if (fn[fn.GetLength()-1]=='\\')
		fn+="*.*";
	else
		fn+="\\*.*";

	BOOL bWorking=ff.FindFile(fn);
	while (bWorking)
	{
		bWorking=ff.FindNextFile();

		fn=ff.GetFileName();
		if (!(fn=="."||fn==".."))
		{
			fn.Empty();
			if (ff.IsDirectory())
				DelDirTree(ff.GetFilePath());
			else
				DeleteFile(ff.GetFilePath());
		}
	}
	ff.Close();

	RemoveDirectory(lpszDirectory);
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?