📄 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 + -