📄 mypropertypage1.cpp
字号:
{
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 + -