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

📄 mypropertypage.cpp

📁 mytoolpad 源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
#include "stdafx.h"
#include "io.h"
#include "string.h"
#include "mytoolpad.h"
#include "shlobj.h"
#include "MyPropertyPage.h"

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

int WINAPI BrowseProc( HWND hwnd, UINT uMsg, LPARAM lParam,LPARAM lpData) ;
IMPLEMENT_DYNCREATE(CMyPropertyPage, CPropertyPage)

CMyPropertyPage::CMyPropertyPage() : CPropertyPage(CMyPropertyPage::IDD)
{
	//{{AFX_DATA_INIT(CMyPropertyPage)
	m_dirname = _T("");
	m_password = _T("");
	m_aliasname = _T("");
	m_comments = _T("");
	m_filter = _T("");
	//}}AFX_DATA_INIT

	m_notinit=TRUE;
	m_dirname=AfxGetApp()->GetProfileString("系统配置","加密目录名","");
	m_filter=AfxGetApp()->GetProfileString("系统配置","文件过滤器","*.son");
}

CMyPropertyPage::~CMyPropertyPage()
{
	AfxGetApp()->WriteProfileString("系统配置","加密目录名",m_dirname);
	AfxGetApp()->WriteProfileString("系统配置","文件过滤器",m_filter);
}

void CMyPropertyPage::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CMyPropertyPage)
	DDX_Control(pDX, IDC_BROWSE, m_ctrl1);
	DDX_Control(pDX, IDC_FILEFILTER, m_filterctrl);
	DDX_Control(pDX, IDC_DESTINATION, m_comctrl);
	DDX_Control(pDX, IDC_ALIASNAME, m_sliasnamectrl);
	DDX_Control(pDX, IDC_UNSECRETALLFILES, m_unsecctrl);
	DDX_Control(pDX, IDC_SECRETALLFILES, m_secctrl);
	DDX_Control(pDX, IDC_PASSWORD, m_passctrl);
	DDX_Control(pDX, IDC_FILELIST, m_fileslist);
	DDX_Control(pDX, IDC_ALIASLIST, m_aliaslist);
	DDX_Text(pDX, IDC_DIRNAME, m_dirname);
	DDX_Text(pDX, IDC_PASSWORD, m_password);
	DDX_Text(pDX, IDC_ALIASNAME, m_aliasname);
	DDV_MaxChars(pDX, m_aliasname, 40);
	DDX_Text(pDX, IDC_DESTINATION, m_comments);
	DDV_MaxChars(pDX, m_comments, 200);
	DDX_Text(pDX, IDC_FILEFILTER, m_filter);
	//}}AFX_DATA_MAP

	m_notinit=FALSE;
}


BEGIN_MESSAGE_MAP(CMyPropertyPage, CPropertyPage)
	//{{AFX_MSG_MAP(CMyPropertyPage)
	ON_BN_CLICKED(IDC_BROWSE, OnBrowse)
	ON_EN_CHANGE(IDC_DIRNAME, OnChangeDirname)
	ON_LBN_SELCHANGE(IDC_FILELIST, OnSelchangeFilelist)
	ON_LBN_SELCHANGE(IDC_ALIASLIST, OnSelchangeAliaslist)
	ON_EN_CHANGE(IDC_ALIASNAME, OnChangeAliasname)
	ON_EN_CHANGE(IDC_DESTINATION, OnChangeDestination)
	ON_BN_CLICKED(IDC_SECRETALLFILES, OnSecretallfiles)
	ON_BN_CLICKED(IDC_UNSECRETALLFILES, OnUnsecretallfiles)
	ON_EN_CHANGE(IDC_PASSWORD, OnChangePassword)
	ON_LBN_DBLCLK(IDC_FILELIST, OnDblclkFilelist)
	ON_LBN_DBLCLK(IDC_ALIASLIST, OnDblclkAliaslist)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()




int WINAPI BrowseProc(HWND hwnd,UINT msg,LPARAM lParam,LPARAM lpData)
{
	switch( msg)
	{
		case BFFM_INITIALIZED:
			SendMessage(hwnd,BFFM_SETSTATUSTEXT,0,(LPARAM)"TORONTO");
			SendMessage(hwnd,BFFM_SETSELECTION,1,(LPARAM)"C:\\");
			break ;
		case BFFM_SELCHANGED:
			SendMessage(hwnd,BFFM_SETSTATUSTEXT,0,(LPARAM)"TORONTO");
			break ;
	}
	return FALSE ;
}

void CMyPropertyPage::OnBrowse() 
{
	ITEMIDLIST *m_dirs,*m_suc;
	SHGetSpecialFolderLocation(GetSafeHwnd(),CSIDL_DESKTOP,&m_dirs);
	BROWSEINFO m_info;
	m_info.hwndOwner=GetSafeHwnd();
	m_info.pidlRoot=m_dirs;
	m_info.pszDisplayName="c:\\";
	m_info.lpszTitle="请您选择目录:";
	m_info.ulFlags=0;
	m_info.lpfn=BrowseProc;
	m_info.lParam=0;
	m_info.iImage=0;
	
	m_suc=SHBrowseForFolder(&m_info);
	if(m_suc)
	{
		SaveComments();

		char m_buffer[MAX_PATH];
		SHGetPathFromIDList(m_suc,m_buffer);
		m_dirname=_T(m_buffer);
		UpdateData(FALSE);
	}
	DirToPanel(m_dirname);
	EnablePanel();
}

void CMyPropertyPage::OnChangeDirname() 
{
	if(m_notinit)
		return ;

	DirToPanel(m_dirname);
	EnablePanel();
}

void CMyPropertyPage::OnSelchangeFilelist()
{
	if(m_notinit)
		return ;

	MakeTheSameList(1);
	NItemToPanel();
	EnablePanel();
}

void CMyPropertyPage::OnSelchangeAliaslist() 
{
	if(m_notinit)
		return ;

	MakeTheSameList(2);
	NItemToPanel();
}

void CMyPropertyPage::NItemToPanel()
{
	int m_index=m_aliaslist.GetCurSel();
	if(m_index>=0)
	{
		FILECOMMENT *m_this=(FILECOMMENT *)m_aliaslist.GetItemData(m_index);
		m_aliasname=_T(m_this->m_aliasname);
		m_comments=_T(m_this->m_comments);
	}
	else
	{
		m_aliasname=_T("本项尚无别名");
		m_comments=_T("本项尚无注释信息");
	}
	UpdateData(FALSE);
}

void CMyPropertyPage::MakeTheSameList(int m_direct)
{
	char m_name1[161];
	int  m_index;

	switch(m_direct)
	{
	case 1:			//从文件到别名
		m_index=m_fileslist.GetCurSel();
		m_fileslist.GetText(m_index,m_name1);
		m_index=FileInAliaslist(m_name1);
		m_aliaslist.SetCurSel(m_index);
		break;

	case 2:			//从别名到文件
		m_index=m_aliaslist.GetCurSel();
		m_index=AliasInAFilelist(m_index);
		m_fileslist.SetCurSel(m_index);
		break;
	}
	UpdateData(FALSE);
}

int  CMyPropertyPage::AliasInAFilelist(int m_index)
{
	int	m_number=m_fileslist.GetCount();
	char m_name[161];
	FILECOMMENT *m_this=(FILECOMMENT *)m_aliaslist.GetItemData(m_index);

	for(int i=0;i<m_number;i++)
	{
		m_fileslist.GetText(i,m_name);
		if(strcmpi(m_this->m_filename,m_name)==0)
		{
			m_index=i;
			break;
		}
	}
	return m_index;
}

int  CMyPropertyPage::FileInAliaslist(char * m_filename)
{
	int  m_index=-1;
	int	m_number=m_aliaslist.GetCount();
	for(int i=0;i<m_number;i++)
	{
		FILECOMMENT *m_this=(FILECOMMENT *)m_aliaslist.GetItemData(i);
		if(strcmpi(m_filename,m_this->m_filename)==0)
		{
			m_index=i;
			break;
		}
	}
	return m_index;
}

void CMyPropertyPage::OnChangeAliasname() 
{
	if(m_notinit)
		return ;

	UpdateData(TRUE);
	int m_index=m_aliaslist.GetCurSel();
	if(m_index>=0)
	{
		FILECOMMENT *m_this=(FILECOMMENT *)m_aliaslist.GetItemData(m_index);
		memset(m_this->m_aliasname,0,41);
		strcpy(m_this->m_aliasname,m_aliasname);
		m_aliaslist.DeleteString(m_index);
		m_aliaslist.InsertString(m_index,m_this->m_aliasname);
		m_aliaslist.SetCurSel(m_index);
		m_aliaslist.SetItemData(m_index,(DWORD)m_this);
	}
}

void CMyPropertyPage::OnChangeDestination() 
{
	if(m_notinit)
		return ;
	UpdateData(TRUE);
	int m_index=m_aliaslist.GetCurSel();
	if(m_index>=0)
	{
		FILECOMMENT *m_this=(FILECOMMENT *)m_aliaslist.GetItemData(m_index);
		memset(m_this->m_comments,0,201);
		strcpy(m_this->m_comments,m_comments);
	}
}

void CMyPropertyPage::SecretDirectory(CString m_dir,char * m_pass)
{
	struct _finddata_t FileBlock;
	CString m_fullname,m_thisdir=m_dir;
	int  m_len=m_dir.GetLength();
	char * m_buffer=m_dir.GetBuffer(m_len);
	if(m_buffer[m_len-1]!='\\')
		m_thisdir+=_T("\\");

	long handle=_findfirst(m_thisdir+_T("*.*"),&FileBlock);
	int  m_ret=0;
	while(handle>0 && m_ret==0)
	{
		m_fullname=m_thisdir+_T(FileBlock.name);
		if(FileBlock.attrib&_A_SUBDIR)
		{
			if(strcmp(FileBlock.name,".")!=0 && strcmp(FileBlock.name,"..")!=0)
				SecretDirectory(m_fullname,m_pass);
		}
		else
		{
			CString m_ext=GetFileExtname(m_fullname);
			if(m_filter.Find(m_ext)==-1)
				SecretFile(m_fullname,m_pass);
		}
		m_ret=_findnext(handle,&FileBlock);
	}
}
void CMyPropertyPage::UnSecretDirectory(CString m_dir,char * m_pass)
{
	struct _finddata_t FileBlock;
	CString m_fullname,m_thisdir=m_dir;
	int  m_len=m_dir.GetLength();
	char * m_buffer=m_dir.GetBuffer(m_len);
	if(m_buffer[m_len-1]!='\\')
		m_thisdir+=_T("\\");

	long handle=_findfirst(m_thisdir+_T("*.*"),&FileBlock);
	int  m_ret=0;
	while(handle>0 && m_ret==0)
	{
		m_fullname=m_thisdir+_T(FileBlock.name);
		if(FileBlock.attrib&_A_SUBDIR)
		{
			if(strcmp(FileBlock.name,".")!=0 && strcmp(FileBlock.name,"..")!=0)
				UnSecretDirectory(m_fullname,m_pass);
		}
		else
		{
			if(strcmpi(FileBlock.name,"readme.txt")!=0)
			{
				if(!UnSecretFile(m_fullname,m_pass))
				{
					CString m_errormsg=_T("解压文件\"");
					m_errormsg+=m_fullname;
					m_errormsg+=_T("\"失败!\n是否继续?");
					if(MessageBox(m_errormsg,"错误警告",MB_YESNO)==IDNO)
						break;
				}
			}
		}
		m_ret=_findnext(handle,&FileBlock);
	}
}

void CMyPropertyPage::ForbidUnsecDirectory(CString m_dir)
{
	struct _finddata_t FileBlock;
	CString m_fullname,m_thisdir=m_dir;
	int  m_len=m_dir.GetLength();
	char * m_buffer=m_dir.GetBuffer(m_len);
	if(m_buffer[m_len-1]!='\\')
		m_thisdir+=_T("\\");

	long handle=_findfirst(m_thisdir+_T("*.*"),&FileBlock);
	int  m_ret=0;
	while(handle>0 && m_ret==0)
	{
		m_fullname=m_thisdir+_T(FileBlock.name);
		if(FileBlock.attrib&_A_SUBDIR)
		{
			if(strcmp(FileBlock.name,".")!=0 && strcmp(FileBlock.name,"..")!=0)
				ForbidUnsecDirectory(m_fullname);
		}
		else
			ForbidUnsecFile(m_fullname);
		m_ret=_findnext(handle,&FileBlock);
	}
}
void CMyPropertyPage::OnSecretallfiles() 
{
	UpdateData(TRUE);
	if(IsDirExist(m_dirname))
	{
		SecretDirectory(m_dirname,m_password.GetBuffer(m_password.GetLength()));
		CreateExplain();
		MessageBox("整个目录下的所有文件加密成功!","恭喜恭喜",MB_OK);
	}
	else
		MessageBox("请您现在左边输入完整路径名,然后再试!","操作错误");
}

void CMyPropertyPage::OnUnsecretallfiles() 
{
	UpdateData(TRUE);
	if(IsDirExist(m_dirname))
	{
		if(GetKeyState(VK_SHIFT)<0)
			ForbidUnsecDirectory(m_dirname);
		else
			UnSecretDirectory(m_dirname,m_password.GetBuffer(m_password.GetLength()));
		DeleteExplain();
		MessageBox("整个目录下的所有文件解密完成,如果没有实际\n解密,那么是口令不对!请E_Mail to :cyh_c@263.net!","恭喜恭喜",MB_OK);
	}
	else
		MessageBox("请您现在左边输入完整路径名,然后再试!","操作错误");
}

BOOL CMyPropertyPage::FileExist(CString filename)
{
	BOOL ret=FALSE;
	if(filename==_T(""))
		return ret;

	HANDLE file=CreateFile(filename,0,FILE_SHARE_READ,
		NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
	if(file!=INVALID_HANDLE_VALUE)
	{
		CloseHandle(file);
		ret=TRUE;
	}
	return ret;
}
void CMyPropertyPage::DirToPanel(CString m_dir)
{
	m_fileslist.ResetContent();

⌨️ 快捷键说明

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