📄 mypropertypage1.cpp
字号:
SystemParametersInfo(SPI_SETDESKWALLPAPER,m_mode,filename,
SPIF_UPDATEINIFILE|SPIF_SENDWININICHANGE);
}
void CMyPropertyPage1::DelWallpaper()
{
SystemParametersInfo(SPI_SETDESKWALLPAPER,m_wallmode,"",
SPIF_UPDATEINIFILE|SPIF_SENDWININICHANGE);
}
CString CMyPropertyPage1::GetShortcutPath(HTREEITEM hitem)
{
if((hitem==NULL) || (hitem==m_shortctrl.GetRootItem()))
return _T("");
char windows[200];
GetWindowsDirectory(windows,200);
CString m_itemname,ret,middle;
DWORD m_data=m_shortctrl.GetItemData(hitem);
if(m_data==1000 || m_data==2000 || m_data==3000)
{
m_itemname=m_shortctrl.GetItemText(hitem);
if(m_itemname.Find("桌面")!=-1)
{
ret=_T(windows);
ret+=_T("\\Desktop");
}
if(m_itemname.Find("启动")!=-1)
{
ret=_T(windows);
ret+=_T("\\Start Menu");
}
if(m_itemname.Find("状态")!=-1)
{
ret=_T(windows);
ret+=_T("\\Application Data\\Microsoft\\Internet Explorer\\Quick Launch");
}
return ret;
}
if(m_shortctrl.ItemHasChildren(hitem))
m_itemname=m_shortctrl.GetItemText(hitem);
ret=m_itemname;
HTREEITEM temp=m_shortctrl.GetParentItem(hitem);
while(temp)
{
m_itemname=m_shortctrl.GetItemText(temp);
if(m_itemname.Find("桌面")!=-1)
{
middle=_T(windows);
if(ret!=_T(""))
middle+=_T("\\Desktop\\")+ret;
else
middle+=_T("\\Desktop");
ret=middle;
break;
}
if(m_itemname.Find("启动菜单")!=-1)
{
middle=_T(windows);
if(ret!=_T(""))
middle+=_T("\\Start Menu\\")+ret;
else
middle+=_T("\\Start Menu");
ret=middle;
break;
}
if(m_itemname.Find("状态")!=-1)
{
middle=_T(windows);
if(ret!=_T(""))
middle+=_T("\\Application Data\\Microsoft\\Internet Explorer\\Quick Launch\\")+ret;
else
middle+=_T("\\Application Data\\Microsoft\\Internet Explorer\\Quick Launch");
ret=middle;
break;
}
if(ret!=_T(""))
middle=m_itemname+_T("\\")+ret;
else
middle=m_itemname;
ret=middle;
temp=m_shortctrl.GetParentItem(temp);
}
return ret;
}
void CMyPropertyPage1::CreateShortcut(CString m_file,CString m_name)
{
CString m_path;
char windows[200];
GetWindowsDirectory(windows,200);
if(m_ondesk)
{
m_path=_T(windows);
m_path+=_T("\\Desktop\\");
m_path+=m_name;
m_path+=_T(".lnk");
CreateShellObjectLink(m_file.GetBuffer(m_file.GetLength()),m_name.GetBuffer(m_name.GetLength()),m_path.GetBuffer(m_path.GetLength()));
if(!m_onstatus)
{
ShortcutToTree();
return ;
}
}
if(m_onstatus)
{
m_path=_T(windows);
m_path+=_T("\\Application Data\\Microsoft\\Internet Explorer\\Quick Launch\\");
m_path+=m_name;
m_path+=_T(".lnk");
CreateShellObjectLink(m_file.GetBuffer(m_file.GetLength()),m_name.GetBuffer(m_name.GetLength()),m_path.GetBuffer(m_path.GetLength()));
ShortcutToTree();
return ;
}
HTREEITEM m_item=m_shortctrl.GetSelectedItem();
m_path=GetShortcutPath(m_item);
m_path+=_T("\\");
m_path+=m_name;
m_path+=_T(".lnk");
CreateShellObjectLink(m_file.GetBuffer(m_file.GetLength()),m_name.GetBuffer(m_name.GetLength()),m_path.GetBuffer(m_path.GetLength()));
ShortcutToTree();
}
void CMyPropertyPage1::OnBrowsewallpaper()
{
CFileDialog dlg(TRUE,"*.bmp",m_wallpaper,OFN_FILEMUSTEXIST|OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"图片文件 (*.bmp)|*.bmp||");
if(dlg.DoModal()==IDOK)
{
m_wallpaper=dlg.GetPathName();
m_error=m_wallpaper;
UpdateData(FALSE);
EnablePanel();
}
}
void CMyPropertyPage1::OnChangeWallpaper()
{
EnablePanel();
m_error=m_wallpaper;
UpdateData(FALSE);
}
void CMyPropertyPage1::OnSetwallpaper()
{
UpdateData(TRUE);
SetWallpaper(m_wallpaper,m_wallmode);
}
void CMyPropertyPage1::OnDelwallpaper()
{
DelWallpaper();
}
void CMyPropertyPage1::OnDeleteshortcut()
{
HTREEITEM hSel=m_shortctrl.GetSelectedItem();
DeleteAllChild(m_shortctrl,hSel);
}
//删除树中当前项的所有子项
void CMyPropertyPage1::DeleteAllChild(CTreeCtrl &tree,HTREEITEM hitem)
{
if(hitem==NULL)
return;
if(tree.ItemHasChildren(hitem))
{
HTREEITEM m_child=tree.GetChildItem(hitem);
while(m_child)
{
DeleteAllChild(tree,m_child);
m_child=tree.GetChildItem(hitem);
}
DeleteChild(hitem);
}
else
DeleteChild(hitem);
}
BOOL CMyPropertyPage1::IsDirExist(char *buffer)
{
BOOL ret=FALSE;
struct _finddata_t FileBlock;
char *findfile=new char[strlen(buffer)+10];
wsprintf(findfile,"%s\\*.*",buffer);
long handle=_findfirst(findfile,&FileBlock);
if(handle>0)
ret=TRUE;
delete findfile;
return ret;
}
void CMyPropertyPage1::DeleteChild(HTREEITEM hitem)
{
CString m_path=GetShortcutPath(hitem);
if(m_path==_T(""))
return;
CString m_name=m_shortctrl.GetItemText(hitem);
m_path+="\\";
m_path+=m_name;
if(IsDirExist(m_path.GetBuffer(m_path.GetLength())))
RemoveDirectory(m_path);
else
DeleteFile(m_path);
m_shortctrl.DeleteItem(hitem);
}
void CMyPropertyPage1::OnCreateshortcut()
{
CreateShortcut(m_exefile,m_shortname);
}
void CMyPropertyPage1::OnBrowseexecute()
{
CFileDialog dlg(TRUE,"*.exe",m_exefile,OFN_FILEMUSTEXIST|OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"执行文件 (*.exe)|*.exe||");
if(dlg.DoModal()==IDOK)
{
m_exefile=dlg.GetPathName();
m_error=m_exefile;
UpdateData(FALSE);
EnablePanel();
}
}
void CMyPropertyPage1::OnChangeExecutefile()
{
EnablePanel();
m_error=m_exefile;
UpdateData(FALSE);
}
BOOL CMyPropertyPage1::FileExist(CString m_file)
{
BOOL ret=FALSE;
if(m_file==_T(""))
return ret;
HANDLE file=CreateFile(m_file,0,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
if(file!=INVALID_HANDLE_VALUE)
{
CloseHandle(file);
ret=TRUE;
}
return ret;
}
void CMyPropertyPage1::OnCenter()
{
m_wallmode=0;
}
void CMyPropertyPage1::OnTile()
{
m_wallmode=1;
}
BOOL CMyPropertyPage1::CreateShellObjectLink(char * sObjectPath,char *sDescription,char *sLinkPath)
{
IShellLink * shelllink;
CoInitialize(NULL);
HRESULT res=CoCreateInstance(CLSID_ShellLink,NULL,
CLSCTX_INPROC_SERVER,IID_IShellLink,(LPVOID *)&shelllink);
if(res==S_OK)
{
IPersistFile * file;
shelllink->SetPath(sObjectPath);
shelllink->SetDescription(sDescription);
res=shelllink->QueryInterface(IID_IPersistFile,(void * *)&file);
if(res==S_OK)
{
WORD wstr[MAX_PATH];
MultiByteToWideChar(CP_ACP,0,sLinkPath,-1,wstr,MAX_PATH);
res=file->Save(wstr,TRUE);
file->Release();
}
shelllink->Release();
}
CoUninitialize();
return (res==S_OK)?TRUE:FALSE;
}
//创建树
HTREEITEM CMyPropertyPage1::CreateTree(CTreeCtrl &tree,char * text)
{
TV_INSERTSTRUCT tci;
tci.item.mask=TVIF_TEXT|TVIF_PARAM;
tci.item.stateMask=0;
tci.item.pszText=text;
tci.item.iImage=I_IMAGECALLBACK;
tci.item.iSelectedImage=I_IMAGECALLBACK;
tci.item.cchTextMax=lstrlen(tci.item.pszText);
tci.item.lParam=0;
tci.hParent=NULL;
tci.hInsertAfter=TVI_LAST;
return(tree.InsertItem(&tci));
}
//插入一项到树中
HTREEITEM CMyPropertyPage1::InsertTreeItem(CTreeCtrl &tree,char * text,int index,HTREEITEM parent,int image)
{
TV_INSERTSTRUCT tci;
tci.item.mask=TVIF_TEXT|TVIF_PARAM;
tci.item.stateMask=0;
tci.item.pszText=text;
tci.item.iImage=0;
tci.item.iSelectedImage=image;
tci.item.cchTextMax=lstrlen(tci.item.pszText);
tci.item.lParam=index;
tci.hParent=parent;
tci.hInsertAfter=TVI_LAST;
return(tree.InsertItem(&tci));
}
//将目录下的所有文件及子目录加入到树中
void CMyPropertyPage1::DirToTree(CTreeCtrl &tree,char *dirname,HTREEITEM root,int iden)
{
char dir[200];
int id=iden,ret=0;
struct _finddata_t fileinfo;
wsprintf(dir,"%s\\*.*",dirname);
long handle=_findfirst(dir,&fileinfo);
while(handle && (ret==0))
{
if(fileinfo.attrib & _A_SUBDIR)
{
if((strcmpi(fileinfo.name,".")!=0) && (strcmpi(fileinfo.name,"..")!=0))
{
HTREEITEM hCur=InsertTreeItem(tree,fileinfo.name,id,root,0);
wsprintf(dir,"%s\\%s",dirname,fileinfo.name);
id++;
DirToTree(tree,dir,hCur,id);
id+=30;
}
}
else
{
InsertTreeItem(tree,fileinfo.name,id,root,0);
id++;
}
ret=_findnext(handle,&fileinfo);
}
}
void CMyPropertyPage1::OnChangeShortname()
{
EnablePanel();
m_error=m_shortname;
UpdateData(FALSE);
}
void CMyPropertyPage1::OnOndesk()
{
UpdateData(TRUE);
m_onstart=!m_ondesk;
m_error=_T("位于桌面上");
EnablePanel();
}
void CMyPropertyPage1::OnOnstartmenu()
{
UpdateData(TRUE);
m_ondesk=!m_onstart;
m_onstatus=!m_onstart;
m_error=_T("位于开始菜单顶部");
EnablePanel();
}
void CMyPropertyPage1::OnOnstatusbar()
{
UpdateData(TRUE);
m_onstart=!m_onstatus;
m_error=_T("位于状态条上(仅仅支持Win98)");
EnablePanel();
}
void CMyPropertyPage1::OnRclickShortcuttree(NMHDR* pNMHDR, LRESULT* pResult)
{
HTREEITEM m_item=m_shortctrl.GetSelectedItem();
DWORD m_data=m_shortctrl.GetItemData(m_item);
CMenu menu;
menu.CreatePopupMenu();
CPoint point;
GetCursorPos(&point);
if(m_item!=m_shortctrl.GetRootItem())
{
if(FileExist(m_exefile) && m_shortname!=_T("") && m_onstart)
{
if(m_shortctrl.ItemHasChildren(m_item) || m_data==1000 || m_data==2000 || m_data==3000)
menu.AppendMenu(MF_ENABLED,IDC_CREATESHORTCUT,"创建快捷方式");
}
if(!(m_data==1000 || m_data==2000 || m_data==3000))
menu.AppendMenu(MF_ENABLED,IDC_DELETESHORTCUT,"删除快捷方式");
}
menu.AppendMenu(MF_ENABLED,IDC_REFRESH,"刷新快捷方式");
menu.TrackPopupMenu(TPM_LEFTALIGN,point.x,point.y,this);
*pResult = 0;
}
void CMyPropertyPage1::OnKeydownShortcuttree(NMHDR* pNMHDR, LRESULT* pResult)
{
TV_KEYDOWN* pTVKeyDown=(TV_KEYDOWN*)pNMHDR;
HTREEITEM hSel=m_shortctrl.GetSelectedItem();
if(hSel==NULL || hSel==m_shortctrl.GetRootItem())
return;
DWORD m_data=m_shortctrl.GetItemData(hSel);
if(m_data==1000 || m_data==2000 || m_data==3000)
return;
switch(pTVKeyDown->wVKey)
{
case VK_DELETE:
OnDeleteshortcut();
break;
case VK_F2:
m_shortctrl.EditLabel(hSel);
break;
}
*pResult = 0;
}
void CMyPropertyPage1::OnEndlabeleditShortcuttree(NMHDR* pNMHDR, LRESULT* pResult)
{
TV_DISPINFO* pTVDispInfo = (TV_DISPINFO*)pNMHDR;
if(pTVDispInfo->item.pszText==0)
return ;
if(pTVDispInfo->item.hItem==NULL || pTVDispInfo->item.hItem==m_shortctrl.GetRootItem())
return;
DWORD m_data=m_shortctrl.GetItemData(pTVDispInfo->item.hItem);
if(m_data==1000 || m_data==2000 || m_data==3000)
return;
CString m_path=GetShortcutPath(pTVDispInfo->item.hItem);
CString m_oldname=m_shortctrl.GetItemText(pTVDispInfo->item.hItem);
m_shortctrl.SetItemText(pTVDispInfo->item.hItem,pTVDispInfo->item.pszText);
CString m_newname=m_shortctrl.GetItemText(pTVDispInfo->item.hItem);
CString m_oldfile=m_path+_T("\\")+m_oldname;
CString m_newfile=m_path+_T("\\")+m_newname;
if(m_shortctrl.ItemHasChildren(pTVDispInfo->item.hItem))
rename(m_oldfile,m_newfile);
else
rename(m_oldfile,m_newfile);
*pResult = 0;
}
BOOL CMyPropertyPage4::OnInitDialog()
{
CPropertyPage::OnInitDialog();
m_tooltip.Create(this);
m_tooltip.Activate(TRUE);
m_tooltip.AddTool(GetDlgItem(IDC_GONGYEAR),"公历年份");
m_tooltip.AddTool(GetDlgItem(IDC_GONGMONTH),"公历月份");
m_tooltip.AddTool(GetDlgItem(IDC_NONGYEAR),"农历年份");
m_tooltip.AddTool(GetDlgItem(IDC_NONGMONTH),"农历月份");
NongMonthToList();
GetAllInformation();
m_ganzhi=m_cal.GetGanZhi(m_nong.year);
return TRUE;
}
void CMyPropertyPage4::OnTimer(UINT nIDEvent)
{
KillTimer(nIDEvent);
switch(nIDEvent)
{
case 100:
SetTimer(100,1000,NULL);
ShowTime();
break;
}
CPropertyPage::OnTimer(nIDEvent);
}
BOOL CMyPropertyPage4::OnKillActive()
{
KillTimer(100);
return CPropertyPage::OnKillActive();
}
BOOL CMyPropertyPage4::OnSetActive()
{
SetTimer(100,0,NULL);
return CPropertyPage::OnSetActive();
}
void CMyPropertyPage4::ShowTime()
{
SYSTEMTIME m_systime;
GetLocalTime(&m_systime);
int m_pass=(int)(GetTickCount()/(DWORD)1000);
m_time.Format("%d:%d:%d, 运行%d秒(%d分)",m_systime.wHour,m_systime.wMinute,m_systime.wSecond,m_pass,m_pass/60);
UpdateData(FALSE);
}
void CMyPropertyPage4::OnPaint()
{
CPaintDC dc(this);
ShowPanel(dc);
}
void CMyPropertyPage4::ShowPanel(CDC & dc)
{
ShowGongDay(dc);
ShowNongDay(dc);
}
void CMyPropertyPage4::DrawPanel()
{
DrawGongDay();
DrawNongDay();
}
void CMyPropertyPage4::ShowGongDay(CDC & dc)
{
dc.BitBlt(m_rectgong.left,m_rectgong.top,m_rectgong.Width(),
m_rectgong.Height(),m_memdc,0,0,SRCCOPY);
}
void CMyPropertyPage4::ShowNongDay(CDC & dc)
{
dc.BitBlt(m_rectnong.left,m_rectnong.top,m_rectnong.Width(),
m_rectnong.Height(),m_memdc,m_rectnong.Width()+1,0,SRCCOPY);
}
void CMyPropertyPage4::DrawGongDay()
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -