⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mytoolpad.cpp

📁 mytoolpad 源码
💻 CPP
字号:
#include "stdafx.h"
#include "MyToolPad.h"
#include "io.h"
#include <direct.h>
#include "MyPropertySheet.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif


BEGIN_MESSAGE_MAP(CMyToolPadApp, CWinApp)
	//{{AFX_MSG_MAP(CMyToolPadApp)
	//}}AFX_MSG
	ON_COMMAND(ID_HELP, CWinApp::OnHelp)
END_MESSAGE_MAP()


CMyToolPadApp::CMyToolPadApp()
{
}

CMyToolPadApp theApp;


BOOL CMyToolPadApp::InitInstance()
{
	if(HavePrevInstance())
	{
		if(MessageBox(NULL,"您已经运行了本程序的一个两个副本,或者\n您先前不正常关闭了本程序,导致了本对话\n框的出现,是否强制启动?","",MB_YESNO)!=IDYES)
			return FALSE;
	}
	m_atom=GlobalAddAtom("柴银辉的工具");
	Enable3dControlsStatic();

	CMyPropertySheet propSheet;
	m_pMainWnd = &propSheet;
	propSheet.SetLogoText("柴银辉编写");
	propSheet.DoModal();
	if(propSheet.m_ClearEmpty)
		DeleteEmptyDir();

	GlobalDeleteAtom(m_atom);
	return FALSE;
}

BOOL CMyToolPadApp::FileIsEmpty(char * m_filename)
{
	CFile m_file;
	if(m_file.Open(m_filename,CFile::modeRead|CFile::typeBinary))
	{
		DWORD m_len=m_file.GetLength();
		m_file.Close();
		return (m_len==0);
	}
	return FALSE;
}

//指定目录所有的文件数
int  CMyToolPadApp::DirHasFiles(char *name)
{
	struct _finddata_t FileBlock;
	char *findfile=new char[strlen(name)+10];
	wsprintf(findfile,"%s\\*.*",name);
	long handle=_findfirst(findfile,&FileBlock);
	int  number=0,ret=0;

	while(handle>0 && ret==0)
	{
		if(!(FileBlock.attrib&_A_SUBDIR))
			number++;
		ret=_findnext(handle,&FileBlock);
	}
	delete findfile;
	return number;
}

//指定目录所有的子目录数
int  CMyToolPadApp::DirHasSubdir(char *name)	   
{
	struct _finddata_t FileBlock;
	char *findfile=new char[strlen(name)+10];
	wsprintf(findfile,"%s\\*.*",name);
	long handle=_findfirst(findfile,&FileBlock);
	int  number=0,ret=0;

	while(handle>0 && ret==0)
	{
		if((FileBlock.attrib&_A_SUBDIR) && (strcmp(FileBlock.name,".")!=0) && (strcmp(FileBlock.name,"..")!=0))
			number++;
		ret=_findnext(handle,&FileBlock);
	}
	delete findfile;
	return number;
}


void CMyToolPadApp::DeleteEmptyDir()
{
	if(MessageBox(NULL,"是否清除整个硬盘中的空目录和空文件?","请您确认",MB_YESNO)!=IDYES)
		return;

	char diskbuf[10];
	for(int i=0;i<26;i++)
	{
		wsprintf(diskbuf,"%c:\\",'A'+i);
		WORD ret=GetDriveType(diskbuf);
		switch(ret)
		{
		case DRIVE_FIXED:
		case DRIVE_REMOTE:
		case DRIVE_RAMDISK:
			wsprintf(diskbuf,"%c:",'A'+i);
			DeleteDir(diskbuf);
			break;
		}
	}
}

void CMyToolPadApp::DeleteDir(char *m_name)
{
	char findfile[255];
	GetWindowsDirectory(findfile,255);
	if(strcmpi(findfile,m_name)==0)
		return;

	struct _finddata_t FileBlock;
	wsprintf(findfile,"%s\\*.*",m_name);
	long handle=_findfirst(findfile,&FileBlock);
	int  ret=0;

	while(handle>0 && ret==0)
	{
		wsprintf(findfile,"%s\\%s",m_name,FileBlock.name);
		if(FileBlock.attrib & _A_SUBDIR)
		{
			if(strcmp(FileBlock.name,".")!=0 && strcmp(FileBlock.name,"..")!=0)
			{
				DeleteDir(findfile);
				if(DirHasFiles(findfile)==0 && DirHasSubdir(findfile)==0)
					_rmdir(findfile);
			}
		}
		else
		{
			if(FileIsEmpty(findfile))
			{
				SetFileAttributes(findfile,FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_NORMAL);
				DeleteFile(findfile);
			}
		}
		ret=_findnext(handle,&FileBlock);
	}

	if(DirHasFiles(m_name)==0 && DirHasSubdir(m_name)==0)
		_rmdir(m_name);
}

BOOL CMyToolPadApp::HavePrevInstance()
{
	ATOM m_atom=GlobalFindAtom("柴银辉的工具");
	return (m_atom!=NULL);
}

⌨️ 快捷键说明

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