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

📄 mypropertypage1.cpp

📁 mytoolpad 源码
💻 CPP
📖 第 1 页 / 共 4 页
字号:
	{
		m_start=i*6000L;
		m_DataFile->Seek(m_start,CFile::begin);
		m_DataFile->Read(m_buffer,6000);

		m_start-=6000L;
		m_DataFile->Seek(m_start,CFile::begin);
		m_DataFile->Write(m_buffer,6000);
	}

	m_filehead.m_totalitems--;
	m_filehead.ToFile(*m_DataFile);
	m_DataFile->SetLength(m_filehead.m_totalitems*6000L+100L);
}

void CMyPropertyPage2::OnDeleteitem() 
{
	DeleteNItem(m_index);
	if(m_index>=m_filehead.m_totalitems)
		m_index=m_filehead.m_totalitems;
	GetCurData();

	if(m_filehead.m_totalitems>0)
		m_indexspin.SetRange(1,m_filehead.m_totalitems);
	else
		m_indexspin.SetRange(0,0);
	EnablePanel();
}

void CMyPropertyPage2::OnChangeIndex() 
{
	if(!m_haveinit)
		return;

	SaveCurData(m_index);
	UpdateData(TRUE);
	if(m_index>m_filehead.m_totalitems)
		m_index=m_filehead.m_totalitems;
	GetCurData();
	EnablePanel();
}
void CMyPropertyPage2::OnChangeSearchtitle() 
{
	EnablePanel();
}
void CMyPropertyPage2::OnChangeTitle() 
{
	m_changed=TRUE;
}
void CMyPropertyPage2::OnChangeContent() 
{
	m_changed=TRUE;
}
void CMyPropertyPage2::CloseCurFile()
{
	if(m_DataFile)
	{
		SaveCurData(m_index);
		m_DataFile->Close();
		delete m_DataFile;
		m_DataFile=NULL;
	}
}
void CMyPropertyPage2::OnChangeFilename() 
{
	if(!m_haveinit)
		return;

	CloseCurFile();
	UpdateData(TRUE);
	m_index=0;
	m_filehead.m_totalitems=0;
	if(FileExist(m_filename))
		ReadFromFile(m_filename);
	EnablePanel();
}

BOOL CMyPropertyPage2::OnInitDialog() 
{
	CPropertyPage::OnInitDialog();

	if(!m_haveinit)
		return TRUE;

	m_tooltip.Create(this);
	m_tooltip.Activate(TRUE);
	m_tooltip.AddTool(GetDlgItem(IDC_FILENAME),"指定加密后的数据文件");
	m_tooltip.AddTool(GetDlgItem(IDC_BROWSE),"寻找加密后的数据文件");
	m_tooltip.AddTool(GetDlgItem(IDC_PASSWORD),"请在此处输入本文件的口令(口令不对不能进入)");
	m_tooltip.AddTool(GetDlgItem(IDC_CHANGEPASS),"更改口令");
	m_tooltip.AddTool(GetDlgItem(IDC_SEARCHINDEX),"搜索索引号");
	m_tooltip.AddTool(GetDlgItem(IDC_SEARCH),"开始搜索");
	m_tooltip.AddTool(GetDlgItem(IDC_SEARCHTITLE),"搜索关键字");
	m_tooltip.AddTool(GetDlgItem(IDC_INDEX),"当前条目索引号");
	m_tooltip.AddTool(GetDlgItem(IDC_ADDITEM),"新增加一项");
	m_tooltip.AddTool(GetDlgItem(IDC_DELETEITEM),"删除当前项(不可恢复)");
	m_tooltip.AddTool(GetDlgItem(IDC_TITLE),"本项标题(含有搜索关键字)");
	m_tooltip.AddTool(GetDlgItem(IDC_CONTENT),"本项内容");

	UpdateData(FALSE);
	ReadFromFile(m_filename);
	InitPanel();
	return TRUE;
}

void CMyPropertyPage2::InitPanel()
{
	if(m_filehead.m_totalitems>0)
	{
		m_index=1;
		UpdateData(FALSE);
		GetCurData();
	}
	EnablePanel();
}

void CMyPropertyPage2::EnablePanel()
{
	if(!m_haveinit)
		return;
	
	UpdateData(TRUE);
	BOOL m_enable=m_passright && m_filehead.m_totalitems>0;
	m_changepass.EnableWindow(m_enable);
	m_sindexspin.EnableWindow(m_enable && m_pitchitems!=0);
	m_sindexctrl.EnableWindow(m_enable && m_pitchitems!=0);
	m_searchtitlectrl.EnableWindow(m_enable);
	m_indexctrl.EnableWindow(m_enable);
	m_indexspin.EnableWindow(m_enable);
	m_titlectrl.EnableWindow(m_enable);
	m_contentctrl.EnableWindow(m_enable);
	m_deletectrl.EnableWindow(m_enable);
	m_searchctrl.EnableWindow(m_enable && m_searchtitle!=_T(""));

	m_enable=m_passright && m_index<m_filehead.m_totalitems;
	m_next.EnableWindow(m_enable);
	m_enable=m_passright && m_index>1;
	m_last.EnableWindow(m_enable);

	UpdateData(FALSE);
}

void CMyPropertyPage2::SaveCurData(int m_curindex)
{
	if(m_changed)
	{
		m_filehead.ToFile(*m_DataFile);
		if(m_curindex<1)
			return ;

		UpdateData(TRUE);
		char buffer[5001];
		DWORD m_start=(m_curindex-1)*6000L+100L;
		m_DataFile->Seek(m_start,CFile::begin);
		memset(buffer,0,1001);
		strcpy(buffer,m_title);
		int m_len=strlen(m_filehead.m_password);
		for(int i=0;i<1000;i++)
			buffer[i]^=m_filehead.m_password[i%m_len];
		m_DataFile->Write(buffer,1000);

		m_start=(m_curindex-1)*6000L+1100L;
		m_DataFile->Seek(m_start,CFile::begin);
		memset(buffer,0,5001);
		strcpy(buffer,m_content);
		for(i=0;i<5000;i++)
			buffer[i]^=m_filehead.m_password[i%m_len];
		m_DataFile->Write(buffer,5000);

		m_changed=FALSE;
	}
}

CString CMyPropertyPage2::GetNContent(int index)
{
	char m_buffer[5001];
	memset(m_buffer,0,5001);
	DWORD m_start=(index-1)*6000L+1100L;
	m_DataFile->Seek(m_start,CFile::begin);
	m_DataFile->Read(m_buffer,5000);
	int m_len=strlen(m_filehead.m_password);
	for(int i=0;i<5000;i++)
		m_buffer[i]^=m_filehead.m_password[i%m_len];
	return _T(m_buffer);
}

CString CMyPropertyPage2::GetNTitle(int index)
{
	char m_buffer[1001];
	memset(m_buffer,0,1001);
	DWORD m_start=(index-1)*6000L+100L;
	m_DataFile->Seek(m_start,CFile::begin);
	m_DataFile->Read(m_buffer,1000);
	int m_len=strlen(m_filehead.m_password);
	for(int i=0;i<1000;i++)
		m_buffer[i]^=m_filehead.m_password[i%m_len];
	return _T(m_buffer);
}
void CMyPropertyPage2::GetCurData()
{
	if(m_index<=0)
		return;

	m_title=GetNTitle(m_index);
	m_content=GetNContent(m_index);
	UpdateData(FALSE);
}

void CMyPropertyPage2::ReadFromFile(CString m_file)
{
	CopyFile(m_file,m_file+_T(".bak"),FALSE);

	if(FileExist(m_file))
	{
		CloseCurFile();
		m_DataFile=new CFile;
		m_DataFile->Open(m_file,CFile::modeReadWrite|CFile::typeBinary);
		m_filehead.FromFile(*m_DataFile);
		if(m_filehead.m_totalitems>0)
		{
			m_index=1;
			UpdateData(FALSE);
		}
		m_indexspin.SetRange(1,m_filehead.m_totalitems);
		m_passright=(m_password.Compare(m_filehead.m_password)==0);
		EnablePanel();
	}
}

void CMyPropertyPage2::CreateDataFile(CString m_name)
{
	CFile m_openfile;
	if(m_openfile.Open(m_name,CFile::modeCreate|CFile::modeReadWrite|CFile::typeBinary))
	{
		m_filehead.ToFile(m_openfile);
		m_openfile.Close();
	}
}

BOOL CMyPropertyPage2::FileExist(CString m_findfile)
{
	BOOL ret=FALSE;
	HANDLE file=CreateFile(m_findfile,0,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
	if(file!=INVALID_HANDLE_VALUE)
	{
		CloseHandle(file);
		ret=TRUE;
	}
	return ret;
}

void CMyPropertyPage2::OnOK() 
{
	if(m_DataFile!=0)
		SaveCurData(m_index);
	CloseCurFile();
	AfxGetApp()->WriteProfileString("系统配置","数据文件",m_filename);

	CPropertyPage::OnOK();
}

BOOL CMyPropertyPage2::OnQueryCancel() 
{
	if(m_DataFile!=0)
		SaveCurData(m_index);
	return CPropertyPage::OnQueryCancel();
}


void CMyPropertyPage2::OnChangePassword() 
{
	if(!m_haveinit)
		return;

	UpdateData(TRUE);
	m_passright=(m_password.Compare(m_filehead.m_password)==0);
	EnablePanel();
}

void CMyPropertyPage2::OnChangeSearchindex() 
{
	if(!m_haveinit)
		return;

	UpdateData(TRUE);
	if(m_sindex>m_pitchitems)
	{
		m_sindex=m_pitchitems;
		UpdateData(FALSE);
	}
	SetSearchItem(m_sindex);
	EnablePanel();
}

void CMyPropertyPage2::OnChangepass() 
{
	if(!m_haveinit)
		return;

	CChangePassword m_pass;
	if(m_pass.DoModal()==IDOK)
	{
		m_password=m_pass.GetPassword();
		UpdateData(FALSE);
		char *m_newpass=m_password.GetBuffer(m_password.GetLength());
		for(int i=0;i<m_filehead.m_totalitems;i++)
			NItemChangePass(i+1,m_filehead.m_password,m_newpass);
		strcpy(m_filehead.m_password,m_password);
		m_filehead.ToFile(*m_DataFile);
		OnChangePassword();
	}
}

void CMyPropertyPage2::NItemChangePass(int index,char *oldpass,char *newpass)
{
	char m_buffer[6001];
	memset(m_buffer,0,6001);
	DWORD m_start=(index-1)*6000L+100L;
	m_DataFile->Seek(m_start,CFile::begin);
	m_DataFile->Read(m_buffer,6000);
	int m_len=strlen(oldpass);
	for(int i=0;i<1000;i++)
		m_buffer[i]^=oldpass[i%m_len];
	for(i=0;i<5000;i++)
		m_buffer[1000+i]^=oldpass[i%m_len];
	m_len=strlen(newpass);
	for(i=0;i<1000;i++)
		m_buffer[i]^=newpass[i%m_len];
	for(i=0;i<5000;i++)
		m_buffer[1000+i]^=newpass[i%m_len];
	m_DataFile->Seek(m_start,CFile::begin);
	m_DataFile->Write(m_buffer,6000);
}








BOOL CMyPropertyPage3::OnInitDialog() 
{
	CPropertyPage::OnInitDialog();
	m_tooltip.Create(this);
	m_tooltip.Activate(TRUE);
	m_tooltip.AddTool(GetDlgItem(IDC_TASKLIST),"所有当前有效列表");
	m_tooltip.AddTool(GetDlgItem(IDC_ADDNOTICE),"添加一项提醒信息");
	m_tooltip.AddTool(GetDlgItem(IDC_DELETENOTICE),"删除一项提醒信息");
	m_tooltip.AddTool(GetDlgItem(IDC_NOTICECONTENT),"提醒的内容");
	m_tooltip.AddTool(GetDlgItem(IDC_ALIASNAME),"提醒信息别名(助记)");
	m_tooltip.AddTool(GetDlgItem(IDC_DATEYEAR),"到期年份");
	m_tooltip.AddTool(GetDlgItem(IDC_DATEMONTH),"到期月份");
	m_tooltip.AddTool(GetDlgItem(IDC_DATEDAY),"到期日");
	m_tooltip.AddTool(GetDlgItem(IDC_DAYS),"提前报警天数");
	m_tooltip.AddTool(GetDlgItem(IDC_WARNHOUR),"发出警报的时间的小时");
	m_tooltip.AddTool(GetDlgItem(IDC_WARNMINUTE),"发出警报的时间的分钟");
	m_tooltip.AddTool(GetDlgItem(IDC_OVERDELETE),"过期后是否删除记录");
	
	InitPanel();
	return TRUE;
}

void CMyPropertyPage3::InitPanel()
{
	m_tasks=m_sheet->m_tasklist;

	int  m_count=m_tasks->GetCount();
	m_tasklist.ResetContent();
	for(int i=0;i<m_count;i++)
	{
		POSITION m_pos=m_tasks->FindIndex(i);
		if(m_pos!=NULL)
		{
			CEverydayTask *m_this=(CEverydayTask *)m_tasks->GetAt(m_pos);
			m_tasklist.AddString(m_this->m_aliasname);
		}
	}
	if(m_tasklist.GetCount()>0)
	{
		m_curindex=0;
		m_tasklist.SetCurSel(m_curindex);
		ItemToPanel(m_curindex);
	}

	EnablePanel();
}

void CMyPropertyPage3::EnablePanel()
{
	BOOL m_enable=m_tasklist.GetCurSel()>=0;
	m_minutectrl.EnableWindow(m_enable);
	m_hourctrl.EnableWindow(m_enable);
	m_overctrl.EnableWindow(m_enable);
	m_daysctrl.EnableWindow(m_enable);
	m_dayctrl.EnableWindow(m_enable);
	m_monthctrl.EnableWindow(m_enable);
	m_yearctrl.EnableWindow(m_enable);
	m_contentctrl.EnableWindow(m_enable);
	m_aliasctrl.EnableWindow(m_enable);
	m_delctrl.EnableWindow(m_enable);
}

void CMyPropertyPage3::ItemToPanel(int m_index)
{
	POSITION m_pos=m_tasks->FindIndex(m_index);
	if(m_pos!=NULL)
	{
		CEverydayTask *m_this=(CEverydayTask *)m_tasks->GetAt(m_pos);
		m_aliasname=m_this->m_aliasname;
		m_content=m_this->m_content;
		m_year=m_this->m_year;
		m_month=m_this->m_month;
		m_day=m_this->m_day;
		m_days=m_this->m_days;
		m_minute=m_this->m_minute;
		m_hour=m_this->m_hour;
		m_over=m_this->m_over;
		UpdateData(FALSE);
	}
}

void CMyPropertyPage3::PanelToItem(int m_index)
{
	UpdateData(TRUE);
	if(m_index<0)
		return;

	POSITION m_pos=m_tasks->FindIndex(m_index);
	if(m_pos!=NULL)
	{
		CEverydayTask *m_this=(CEverydayTask *)m_tasks->GetAt(m_pos);
		m_this->m_aliasname=m_aliasname;
		m_this->m_content=m_content;
		m_this->m_year=m_year;
		m_this->m_month=m_month;
		m_this->m_day=m_day;
		m_this->m_days=m_days;
		m_this->m_minute=m_minute;
		m_this->m_hour=m_hour;
		m_this->m_over=m_over;
	}
}

void CMyPropertyPage3::OnAddnotice() 
{
	PanelToItem(m_curindex);
	CEverydayTask *m_this=new CEverydayTask;
	m_tasks->AddTail(m_this);
	m_curindex=m_tasklist.GetCount();
	m_tasklist.InsertString(m_curindex,m_this->m_aliasname);
	m_tasklist.SetCurSel(m_curindex);
	ItemToPanel(m_curindex);
	EnablePanel();
}

void CMyPropertyPage3::OnDeletenotice() 
{
	m_curindex=m_tasklist.GetCurSel();
	int m_count=m_tasklist.GetCount()-1;
	POSITION m_pos=m_tasks->FindIndex(m_curindex);
	if(m_pos==NULL)
		return;

	CEverydayTask *m_this=(CEverydayTask *)m_tasks->GetAt(m_pos);
	m_tasks->RemoveAt(m_pos);
	delete m_this;
	m_tasklist.DeleteString(m_curindex);
	if(m_curindex>=m_count)
		m_curindex=m_count-1;
	if(m_curindex>=0)
	{
		m_tasklist.SetCurSel(m_curindex);
		ItemToPanel(m_curindex);
	}
	EnablePanel();
}

void CMyPropertyPage3::OnSelchangeTasklist() 
{
	PanelToItem(m_curindex);
	m_curindex=m_tasklist.GetCurSel();
	ItemToPanel(m_curindex);
	EnablePanel();
}

void CMyPropertyPage3::OnChangeAliasname() 
{
	UpdateData(TRUE);
	m_curindex=m_tasklist.GetCurSel();
	POSITION m_pos=m_tasks->FindIndex(m_curindex);
	if(m_pos==NULL)
		return;

	CEverydayTask *m_this=(CEverydayTask *)m_tasks->GetAt(m_pos);
	m_this->m_aliasname=m_aliasname;
	m_tasklist.DeleteString(m_curindex);
	m_tasklist.InsertString(m_curindex,m_aliasname);
	m_tasklist.SetCurSel(m_curindex);
}

BOOL CMyPropertyPage3::OnKillActive() 
{
	PanelToItem(m_curindex);
	return CPropertyPage::OnKillActive();
}

BOOL CMyPropertyPage1::PreTranslateMessage(MSG* pMsg) 
{
	m_tooltip.RelayEvent(pMsg);
	return CPropertyPage::PreTranslateMessage(pMsg);
}

BOOL CMyPropertyPage2::PreTranslateMessage(MSG* pMsg) 
{
	m_tooltip.RelayEvent(pMsg);
	return CPropertyPage::PreTranslateMessage(pMsg);
}



BOOL CMyPropertyPage3::PreTranslateMessage(MSG* pMsg) 
{
	m_tooltip.RelayEvent(pMsg);
	return CPropertyPage::PreTranslateMessage(pMsg);
}

BOOL CMyPropertyPage4::PreTranslateMessage(MSG* pMsg) 
{
	m_tooltip.RelayEvent(pMsg);
	return CPropertyPage::PreTranslateMessage(pMsg);
}

⌨️ 快捷键说明

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