📄 mypropertypage1.cpp
字号:
#include "stdafx.h"
#include "resource.h"
#include "OrganizeInifile.h"
#include "CalendarConvert.h"
#include "shlobj.h"
#include "io.h"
#include "MyPropertyPage1.h"
#include "ChangePassword.h"
#include "MyPropertySheet.h"
#ifdef _DEBUG
#undef THIS_FILE
static char BASED_CODE THIS_FILE[] = __FILE__;
#endif
extern CMyPropertySheet *m_sheet;
IMPLEMENT_DYNCREATE(CMyPropertyPage1, CPropertyPage)
IMPLEMENT_DYNCREATE(CMyPropertyPage2, CPropertyPage)
IMPLEMENT_DYNCREATE(CMyPropertyPage3, CPropertyPage)
IMPLEMENT_DYNCREATE(CMyPropertyPage4, CPropertyPage)
CMyPropertyPage1::CMyPropertyPage1() : CPropertyPage(CMyPropertyPage1::IDD)
{
//{{AFX_DATA_INIT(CMyPropertyPage1)
m_wallpaper = _T("");
m_exefile = _T("");
m_error = _T("");
m_ondesk = FALSE;
m_onstart = FALSE;
m_onstatus = FALSE;
m_shortname = _T("");
//}}AFX_DATA_INIT
m_wallmode=0;
}
CMyPropertyPage1::~CMyPropertyPage1()
{
}
void CMyPropertyPage1::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CMyPropertyPage1)
DDX_Control(pDX, IDC_DELWALLPAPER, m_delctrl);
DDX_Control(pDX, IDC_BROWSEWALLPAPER, m_ctrl2);
DDX_Control(pDX, IDC_BROWSEEXECUTE, m_ctrl1);
DDX_Control(pDX, IDC_SHORTNAME, m_shortnamectrl);
DDX_Control(pDX, IDC_SHORTCUTTREE, m_shortctrl);
DDX_Control(pDX, IDC_CENTER, m_centerctrl);
DDX_Control(pDX, IDC_TILE, m_tilectrl);
DDX_Control(pDX, IDC_ONSTATUSBAR, m_onstatusctrl);
DDX_Control(pDX, IDC_ONSTARTMENU, m_onstartctrl);
DDX_Control(pDX, IDC_ONDESK, m_ondeskctrl);
DDX_Control(pDX, IDC_CREATESHORTCUT, m_createshort);
DDX_Control(pDX, IDC_SETWALLPAPER, m_setpaper);
DDX_Text(pDX, IDC_WALLPAPER, m_wallpaper);
DDX_Text(pDX, IDC_EXECUTEFILE, m_exefile);
DDX_Text(pDX, IDC_ERRORPROMPT, m_error);
DDX_Check(pDX, IDC_ONDESK, m_ondesk);
DDX_Check(pDX, IDC_ONSTARTMENU, m_onstart);
DDX_Check(pDX, IDC_ONSTATUSBAR, m_onstatus);
DDX_Text(pDX, IDC_SHORTNAME, m_shortname);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CMyPropertyPage1, CPropertyPage)
//{{AFX_MSG_MAP(CMyPropertyPage1)
ON_BN_CLICKED(IDC_BROWSEWALLPAPER, OnBrowsewallpaper)
ON_BN_CLICKED(IDC_BROWSEEXECUTE, OnBrowseexecute)
ON_EN_CHANGE(IDC_WALLPAPER, OnChangeWallpaper)
ON_BN_CLICKED(IDC_SETWALLPAPER, OnSetwallpaper)
ON_BN_CLICKED(IDC_DELWALLPAPER, OnDelwallpaper)
ON_BN_CLICKED(IDC_CREATESHORTCUT, OnCreateshortcut)
ON_BN_CLICKED(IDC_DELETESHORTCUT, OnDeleteshortcut)
ON_BN_CLICKED(IDC_REFRESH, OnRefresh)
ON_EN_CHANGE(IDC_EXECUTEFILE, OnChangeExecutefile)
ON_BN_CLICKED(IDC_CENTER, OnCenter)
ON_BN_CLICKED(IDC_TILE, OnTile)
ON_EN_CHANGE(IDC_SHORTNAME, OnChangeShortname)
ON_BN_CLICKED(IDC_ONDESK, OnOndesk)
ON_BN_CLICKED(IDC_ONSTARTMENU, OnOnstartmenu)
ON_BN_CLICKED(IDC_ONSTATUSBAR, OnOnstatusbar)
ON_NOTIFY(NM_RCLICK, IDC_SHORTCUTTREE, OnRclickShortcuttree)
ON_NOTIFY(TVN_KEYDOWN, IDC_SHORTCUTTREE, OnKeydownShortcuttree)
ON_NOTIFY(TVN_ENDLABELEDIT, IDC_SHORTCUTTREE, OnEndlabeleditShortcuttree)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
CMyPropertyPage2::CMyPropertyPage2() : CPropertyPage(CMyPropertyPage2::IDD)
{
//{{AFX_DATA_INIT(CMyPropertyPage2)
m_content =_T("");
m_filename=_T("");
m_index = 0;
m_password=_T("");
m_sindex = 0;
m_searchtitle=_T("");
m_error = _T("");
m_title = _T("");
//}}AFX_DATA_INIT
m_DataFile=NULL;
m_passright=FALSE;
m_haveinit=FALSE;
m_pitchitems=0;
m_filename=AfxGetApp()->GetProfileString("系统配置","数据文件","");
if(!FileExist(m_filename))
m_filename=_T("");
}
CMyPropertyPage2::~CMyPropertyPage2()
{
}
void CMyPropertyPage2::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CMyPropertyPage2)
DDX_Control(pDX, IDC_BROWSE, m_ctrl2);
DDX_Control(pDX, IDC_ADDITEM, m_ctrl1);
DDX_Control(pDX, IDC_TITLE, m_titlectrl);
DDX_Control(pDX, IDC_SEARCHTITLE, m_searchtitlectrl);
DDX_Control(pDX, IDC_SEARCHSPIN, m_sindexspin);
DDX_Control(pDX, IDC_SEARCHINDEX, m_sindexctrl);
DDX_Control(pDX, IDC_SEARCH, m_searchctrl);
DDX_Control(pDX, IDC_NEXT, m_next);
DDX_Control(pDX, IDC_LAST, m_last);
DDX_Control(pDX, IDC_INDEX, m_indexctrl);
DDX_Control(pDX, IDC_DELETEITEM, m_deletectrl);
DDX_Control(pDX, IDC_CONTENT, m_contentctrl);
DDX_Control(pDX, IDC_CHANGEPASS, m_changepass);
DDX_Control(pDX, IDC_ADDDEC, m_indexspin);
DDX_Text(pDX, IDC_CONTENT, m_content);
DDX_Text(pDX, IDC_FILENAME, m_filename);
DDX_Text(pDX, IDC_INDEX, m_index);
DDX_Text(pDX, IDC_PASSWORD, m_password);
DDX_Text(pDX, IDC_SEARCHINDEX, m_sindex);
DDX_Text(pDX, IDC_SEARCHTITLE, m_searchtitle);
DDX_Text(pDX, IDC_SHOWERROR, m_error);
DDX_Text(pDX, IDC_TITLE, m_title);
//}}AFX_DATA_MAP
m_haveinit=TRUE;
}
BEGIN_MESSAGE_MAP(CMyPropertyPage2, CPropertyPage)
//{{AFX_MSG_MAP(CMyPropertyPage2)
ON_BN_CLICKED(IDC_BROWSE, OnBrowse)
ON_BN_CLICKED(IDC_SEARCH, OnSearch)
ON_BN_CLICKED(IDC_ADDITEM, OnAdditem)
ON_BN_CLICKED(IDC_DELETEITEM, OnDeleteitem)
ON_BN_CLICKED(IDC_LAST, OnLast)
ON_BN_CLICKED(IDC_NEXT, OnNext)
ON_EN_CHANGE(IDC_INDEX, OnChangeIndex)
ON_EN_CHANGE(IDC_SEARCHTITLE, OnChangeSearchtitle)
ON_EN_CHANGE(IDC_TITLE, OnChangeTitle)
ON_EN_CHANGE(IDC_CONTENT, OnChangeContent)
ON_EN_CHANGE(IDC_FILENAME, OnChangeFilename)
ON_EN_CHANGE(IDC_PASSWORD, OnChangePassword)
ON_EN_CHANGE(IDC_SEARCHINDEX, OnChangeSearchindex)
ON_BN_CLICKED(IDC_CHANGEPASS, OnChangepass)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
CEverydayTask::CEverydayTask()
{
m_aliasname=_T("请您输入别名");
m_content=_T("请您在此处输入提醒信息");
SYSTEMTIME m_time;
GetLocalTime(&m_time);
CCalendarConvert m_cal;
CALENDAR m_first(m_time.wYear,m_time.wMonth,m_time.wDay);
CALENDAR m_this=m_cal.GetDateAfterDays(m_first,10);
m_year=m_this.year;
m_month=m_this.month;
m_day=m_this.day;
m_days=2;
m_hour=m_time.wHour;
m_minute=m_time.wMinute;
m_over=TRUE;
}
void CEverydayTask::FromFile(CFile& m_file)
{
int m_len=0;
m_file.Read((char *)&m_len,sizeof(int));
char * m_buffer=new char[m_len+1];
memset(m_buffer,0,m_len+1);
m_file.Read(m_buffer,m_len);
m_aliasname=_T(m_buffer);
delete m_buffer;
m_file.Read((char *)&m_len,sizeof(int));
m_buffer=new char[m_len+1];
memset(m_buffer,0,m_len+1);
m_file.Read(m_buffer,m_len);
m_content=_T(m_buffer);
delete m_buffer;
m_file.Read((char *)&m_year,sizeof(int));
m_file.Read((char *)&m_month,sizeof(int));
m_file.Read((char *)&m_day,sizeof(int));
m_file.Read((char *)&m_days,sizeof(int));
m_file.Read((char *)&m_hour,sizeof(int));
m_file.Read((char *)&m_minute,sizeof(int));
m_file.Read((char *)&m_over,sizeof(int));
}
void CEverydayTask::ToFile(CFile& m_file)
{
int m_len=m_aliasname.GetLength();
m_file.Write((char *)&m_len,sizeof(int));
char * m_buffer=m_aliasname.GetBuffer(m_len);
m_file.Write(m_buffer,m_len);
m_len=m_content.GetLength();
m_file.Write((char *)&m_len,sizeof(int));
m_buffer=m_content.GetBuffer(m_len);
m_file.Write(m_buffer,m_len);
m_file.Write((char *)&m_year,sizeof(int));
m_file.Write((char *)&m_month,sizeof(int));
m_file.Write((char *)&m_day,sizeof(int));
m_file.Write((char *)&m_days,sizeof(int));
m_file.Write((char *)&m_hour,sizeof(int));
m_file.Write((char *)&m_minute,sizeof(int));
m_file.Write((char *)&m_over,sizeof(int));
}
BOOL CEverydayTask::IsOverDate()
{
SYSTEMTIME m_time;
GetLocalTime(&m_time);
CCalendarConvert m_cal;
CALENDAR m_newday,m_oldday;
m_cal.MakeCalendar(&m_newday,m_time.wYear,m_time.wMonth,m_time.wDay);
m_cal.MakeCalendar(&m_oldday,m_year,m_month,m_day);
return (m_cal.CompareTwoDate(m_newday,m_oldday)>0);
}
BOOL CEverydayTask::AtLimited()
{
if(IsOverDate())
return FALSE;
SYSTEMTIME m_time;
GetLocalTime(&m_time);
CCalendarConvert m_cal;
CALENDAR m_newday,m_oldday;
m_cal.MakeCalendar(&m_newday,m_time.wYear,m_time.wMonth,m_time.wDay);
m_cal.MakeCalendar(&m_oldday,m_year,m_month,m_day);
if(m_cal.GetGongDays(m_newday,m_oldday)<=m_days)
return TRUE;
return FALSE;
}
BOOL CEverydayTask::ReachTime()
{
if(!AtLimited())
return FALSE;
SYSTEMTIME m_time;
GetLocalTime(&m_time);
BOOL m_reach=FALSE;
if(m_time.wHour==m_hour && m_time.wMinute==m_minute)
m_reach=TRUE;
return m_reach;
}
BOOL CEverydayTask::KeepInQuene()
{
if(IsOverDate() && m_over)
return FALSE;
return TRUE;
}
CMyPropertyPage3::CMyPropertyPage3() : CPropertyPage(CMyPropertyPage3::IDD)
{
//{{AFX_DATA_INIT(CMyPropertyPage3)
m_aliasname = _T("");
m_content = _T("");
m_over =FALSE;
m_day =0;
m_month=0;
m_year =0;
m_days =0;
m_hour =0;
m_minute=0;
//}}AFX_DATA_INIT
SYSTEMTIME m_stime;
GetLocalTime(&m_stime);
m_year =(int)m_stime.wYear;
m_month=(int)m_stime.wMonth;
m_day =(int)m_stime.wDay;
m_hour =(int)m_stime.wHour;
m_minute=(int)m_stime.wMinute;
m_tasks=NULL;
m_curindex=-1;
}
CMyPropertyPage3::~CMyPropertyPage3()
{
}
void CMyPropertyPage3::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CMyPropertyPage3)
DDX_Control(pDX, IDC_ADDNOTICE, m_ctrl1);
DDX_Control(pDX, IDC_WARNMINUTE, m_minutectrl);
DDX_Control(pDX, IDC_WARNHOUR, m_hourctrl);
DDX_Control(pDX, IDC_OVERDELETE, m_overctrl);
DDX_Control(pDX, IDC_DAYS, m_daysctrl);
DDX_Control(pDX, IDC_DATEDAY, m_dayctrl);
DDX_Control(pDX, IDC_DATEMONTH, m_monthctrl);
DDX_Control(pDX, IDC_DATEYEAR, m_yearctrl);
DDX_Control(pDX, IDC_NOTICECONTENT, m_contentctrl);
DDX_Control(pDX, IDC_ALIASNAME, m_aliasctrl);
DDX_Control(pDX, IDC_DELETENOTICE, m_delctrl);
DDX_Control(pDX, IDC_TASKLIST, m_tasklist);
DDX_Text(pDX, IDC_ALIASNAME, m_aliasname);
DDX_Text(pDX, IDC_NOTICECONTENT, m_content);
DDX_Check(pDX, IDC_OVERDELETE, m_over);
DDX_Text(pDX, IDC_DATEDAY, m_day);
DDV_MinMaxInt(pDX, m_day, 1, 31);
DDX_Text(pDX, IDC_DATEMONTH, m_month);
DDV_MinMaxInt(pDX, m_month, 1, 12);
DDX_Text(pDX, IDC_DATEYEAR, m_year);
DDX_Text(pDX, IDC_DAYS, m_days);
DDV_MinMaxInt(pDX, m_days, 0, 50);
DDX_Text(pDX, IDC_WARNHOUR, m_hour);
DDV_MinMaxInt(pDX, m_hour, 0, 23);
DDX_Text(pDX, IDC_WARNMINUTE, m_minute);
DDV_MinMaxInt(pDX, m_minute, 0, 59);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CMyPropertyPage3, CPropertyPage)
//{{AFX_MSG_MAP(CMyPropertyPage3)
ON_BN_CLICKED(IDC_ADDNOTICE, OnAddnotice)
ON_BN_CLICKED(IDC_DELETENOTICE, OnDeletenotice)
ON_LBN_SELCHANGE(IDC_TASKLIST, OnSelchangeTasklist)
ON_EN_CHANGE(IDC_ALIASNAME, OnChangeAliasname)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
CMyPropertyPage4::CMyPropertyPage4() : CPropertyPage(CMyPropertyPage4::IDD)
{
SYSTEMTIME m_sys;
GetLocalTime(&m_sys);
//{{AFX_DATA_INIT(CMyPropertyPage4)
m_time = _T("");
m_ganzhi = _T("");
m_gongyear=m_sys.wYear;
m_nongyear=m_sys.wYear;
//}}AFX_DATA_INIT
m_gongday=m_sys.wDay;
m_gong.FillThis(m_gongyear,m_sys.wMonth,m_gongday);
CALENDAR m_nongli=m_cal.ConvertToNongLi(m_gong);
m_nong.year=m_nongli.year;
m_nong.month=m_nongli.month;
m_nong.day=m_nongli.day;
m_nongyear=m_nong.year;
m_nongday=m_nong.day;
m_memdc=NULL;
m_oldbit=NULL;
m_oldpen=NULL;
m_itemw=16;
m_itemh=16;
}
CMyPropertyPage4::~CMyPropertyPage4()
{
ReleaseMemdc();
}
void CMyPropertyPage4::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CMyPropertyPage4)
DDX_Control(pDX, IDC_NONGRECT, m_nongrect);
DDX_Control(pDX, IDC_GONGRECT, m_gongrect);
DDX_Control(pDX, IDC_NONGMONTH, m_nongmonth);
DDX_Control(pDX, IDC_GONGMONTH, m_gongmonth);
DDX_Text(pDX, IDC_TIME, m_time);
DDX_Text(pDX, IDC_GANZHI, m_ganzhi);
DDX_Text(pDX, IDC_GONGYEAR, m_gongyear);
DDX_Text(pDX, IDC_NONGYEAR, m_nongyear);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CMyPropertyPage4, CPropertyPage)
//{{AFX_MSG_MAP(CMyPropertyPage4)
ON_WM_TIMER()
ON_WM_PAINT()
ON_EN_CHANGE(IDC_GONGYEAR, OnChangeGongyear)
ON_EN_CHANGE(IDC_NONGYEAR, OnChangeNongyear)
ON_WM_LBUTTONDOWN()
ON_CBN_SELCHANGE(IDC_GONGMONTH, OnSelchangeGongmonth)
ON_CBN_SELCHANGE(IDC_NONGMONTH, OnSelchangeNongmonth)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
BOOL CMyPropertyPage1::OnInitDialog()
{
CPropertyPage::OnInitDialog();
m_tooltip.Create(this);
m_tooltip.Activate(TRUE);
m_tooltip.AddTool(GetDlgItem(IDC_WALLPAPER),"请您输入新墙纸文件名");
m_tooltip.AddTool(GetDlgItem(IDC_BROWSEWALLPAPER),"浏览墙纸文件");
m_tooltip.AddTool(GetDlgItem(IDC_SETWALLPAPER),"设置新墙纸");
m_tooltip.AddTool(GetDlgItem(IDC_DELWALLPAPER),"删除当前墙纸");
m_tooltip.AddTool(GetDlgItem(IDC_CENTER),"置墙纸于屏幕中央(不放缩)");
m_tooltip.AddTool(GetDlgItem(IDC_TILE),"置墙纸于满屏幕(重叠铺放)");
m_tooltip.AddTool(GetDlgItem(IDC_EXECUTEFILE),"要创建快捷方式的可执行文件名");
m_tooltip.AddTool(GetDlgItem(IDC_BROWSEEXECUTE),"寻找可执行文件");
m_tooltip.AddTool(GetDlgItem(IDC_SHORTNAME),"快捷方式全名");
m_tooltip.AddTool(GetDlgItem(IDC_CREATESHORTCUT),"创建快捷方式");
m_tooltip.AddTool(GetDlgItem(IDC_ONDESK),"将快捷方式放到桌面上");
m_tooltip.AddTool(GetDlgItem(IDC_ONSTARTMENU),"将快捷方式放到Windows启动菜单");
m_tooltip.AddTool(GetDlgItem(IDC_ONSTATUSBAR),"将快捷方式放到Windows状态栏");
m_tooltip.AddTool(GetDlgItem(IDC_SHORTCUTTREE),"Windows程序组快捷方式列表");
InitPanel();
EnablePanel();
return TRUE;
}
void CMyPropertyPage1::ShortcutToTree()
{
m_shortctrl.DeleteAllItems();
HTREEITEM m_root=CreateTree(m_shortctrl,"我的电脑");
HTREEITEM m_child=InsertTreeItem(m_shortctrl,"桌面",1000,m_root,0);
char m_buffer[255],m_windir[255];
GetWindowsDirectory(m_buffer,255);
int m_len=strlen(m_buffer);
if(m_buffer[m_len-1]!='\\')
strcat(m_buffer,"\\");
wsprintf(m_windir,"%s%s",m_buffer,"Desktop");
DirToTree(m_shortctrl,m_windir,m_child,1001);
m_child=InsertTreeItem(m_shortctrl,"状态栏(仅Win98)",2000,m_root,0);
wsprintf(m_windir,"%s%s",m_buffer,"Application Data\\Microsoft\\Internet Explorer\\Quick Launch");
DirToTree(m_shortctrl,m_windir,m_child,2001);
m_child=InsertTreeItem(m_shortctrl,"启动菜单",3000,m_root,0);
wsprintf(m_windir,"%s%s",m_buffer,"Start Menu");
DirToTree(m_shortctrl,m_windir,m_child,3001);
m_shortctrl.Expand(m_root,TVE_EXPAND);
m_shortctrl.Expand(m_child,TVE_EXPAND);
m_shortctrl.SelectItem(m_child);
}
void CMyPropertyPage1::OnRefresh()
{
ShortcutToTree();
}
void CMyPropertyPage1::InitPanel()
{
ShortcutToTree();
COrganizeInifile org;
m_wallpaper=_T(org.GetStringKey(HKEY_CURRENT_USER,"Control Panel\\desktop","Wallpaper"));
m_exefile=_T("");
m_error=m_wallpaper;
m_ondesk=TRUE;
m_onstatus=TRUE;
m_onstart=FALSE;
m_shortname=_T("");
CheckRadioButton(IDC_CENTER,IDC_TILE,(m_wallmode==0)?IDC_CENTER:IDC_TILE);
UpdateData(FALSE);
}
void CMyPropertyPage1::EnablePanel()
{
UpdateData(TRUE);
BOOL m_enable=FileExist(m_wallpaper);
m_setpaper.EnableWindow(m_enable);
m_centerctrl.EnableWindow(m_enable);
m_tilectrl.EnableWindow(m_enable);
m_enable=FileExist(m_exefile);
m_shortnamectrl.EnableWindow(m_enable);
m_onstatusctrl.EnableWindow(m_enable&&(!m_onstart));
m_ondeskctrl.EnableWindow(m_enable&&(!m_onstart));
m_onstartctrl.EnableWindow(m_enable && (!(m_ondesk || m_onstatus)));
m_enable=(m_enable && (m_shortname!=_T("")));
m_createshort.EnableWindow(m_enable);
}
void CMyPropertyPage1::SetWallpaper(CString m_file,int m_mode)
{
UpdateData(TRUE);
COrganizeInifile org;
char buffer[10];
wsprintf(buffer,"%d",0);
org.CreateStringKey(HKEY_CURRENT_USER,"Control Panel\\desktop","WallpaperStyle",buffer);
wsprintf(buffer,"%d",m_mode);
org.CreateStringKey(HKEY_CURRENT_USER,"Control Panel\\desktop","TileWallpaper",buffer);
char * filename=m_file.GetBuffer(m_file.GetLength());
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -