📄 general.cpp
字号:
if (!Reg.GetDwordValue(HKEY_CURRENT_USER,"Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer","NoSetTaskbar",wordbuf))
wordbuf=0;
m_cSetting.SetCheck(i++,(BOOL)wordbuf);
}
UpdateData(FALSE);
return TRUE;
}
//确认修改
void CGeneral::OnOK()
{
if ( Modify )
{
RegEdit Reg;
m_cFoldLocal.GetWindowText(Folder[CurSel]);
Reg.RootKey=HKEY_LOCAL_MACHINE;
if (Reg.OpenKey("Software\\Microsoft\\Windows\\CurrentVersion"))
{
CString String;
GetDlgItem(IDC_USERNAME)->GetWindowText(String);
Reg.WriteString("RegisteredOwner",String);
GetDlgItem(IDC_ORGNAME)->GetWindowText(String);
Reg.WriteString("RegisteredOrganization",String);
GetDlgItem(IDC_SYSVER)->GetWindowText(String);
Reg.WriteString("Version",String);
if (!Folder[0].IsEmpty())
Reg.WriteString("ProgramFilesDir",Folder[0]);
if (!Folder[1].IsEmpty())
Reg.WriteString("CommonFilesDir",Folder[1]);
}
Reg.RootKey=HKEY_CURRENT_USER;
if (Reg.OpenKey("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders"))
{
char *StrKey[9]={"Desktop","Start Menu","Favorites","Personal","Recent","SendTo","Startup","Programs","Templates"};
for (int i=0;i<9;i++)
{
if (!Folder[2+i].IsEmpty())
Reg.WriteString(StrKey[i],Folder[2+i]);
}
}
Reg.SetStringValue(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Setup","SourcePath",Folder[11]);
/* 写设置列表框中各项 */
int i=0;
//菜单对齐方式
::SystemParametersInfo(SPI_SETMENUDROPALIGNMENT,m_cSetting.GetCheck(i++),NULL,SPIF_UPDATEINIFILE|SPIF_SENDCHANGE);
//警告发声
::SystemParametersInfo(SPI_SETBEEP,m_cSetting.GetCheck(i++),NULL,SPIF_UPDATEINIFILE|SPIF_SENDCHANGE);
//窗口动画
{
ANIMATIONINFO WinAni;
WinAni.cbSize=sizeof(WinAni);
WinAni.iMinAnimate=m_cSetting.GetCheck(i++);
::SystemParametersInfo(SPI_SETANIMATION,0,&WinAni,SPIF_UPDATEINIFILE|SPIF_SENDCHANGE);
}
//快速关机
{
int FastBoot=m_cSetting.GetCheck(i++);
CString String;
String.Format("%d",FastBoot);
Reg.SetStringValue(HKEY_LOCAL_MACHINE,"System\\CurrentControlSet\\control\\Shutdown","FastReboot",String);
}
//数据光盘自动执行
{
char Flag[4],FlagChar;
Reg.GetBinaryValue(HKEY_CURRENT_USER,"Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer","NoDriveTypeAutoRun",Flag);
Flag[0]&=0xdf;
FlagChar=(!m_cSetting.GetCheck(i++))<<5;
Flag[0]|=FlagChar;
Reg.SetBinaryValue(HKEY_CURRENT_USER,"Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer","NoDriveTypeAutoRun",Flag);
}
//CD盘自动播放
{
int Flag=m_cSetting.GetCheck(i++);
CString Str;
Str=Flag ? "Play":"";
Reg.SetStringValue(HKEY_CLASSES_ROOT,"AudioCD\\Shell","",Str);
}
//删除快捷方式图标上的箭头
{
BOOL Flag=m_cSetting.GetCheck(i++);
Reg.RootKey=HKEY_CLASSES_ROOT;
if (Reg.OpenKey("piffile"))
{
if (Flag)
Reg.DeleteValue("IsShortcut");
else
Reg.WriteString("IsShortcut","");
}
if (Reg.OpenKey("lnkfile"))
{
if (Flag)
Reg.DeleteValue("IsShortcut");
else
Reg.WriteString("IsShortcut","");
}
}
//退出时自动清除文档菜单
{
Reg.SetBinaryValue(HKEY_CURRENT_USER,"Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer","ClearRecentDocsOnExit",(DWORD)m_cSetting.GetCheck(i++));
}
//在桌面上显示Windows版本号
{
CString Str;
int Flag=m_cSetting.GetCheck(i++);
Str=Flag ? "1":"0";
Reg.SetStringValue(HKEY_CURRENT_USER,"Control Panel\\desktop","PaintDesktopVersion",Str);
}
//屏幕经常自动更新
{
Reg.SetBinaryValue(HKEY_LOCAL_MACHINE,"System\\CurrentControlSet\\Control\\Update","UpdateMode",(DWORD)!m_cSetting.GetCheck(i++));
}
//修改任务栏时间格式为HHMM
{
Reg.SetStringValue(HKEY_CURRENT_USER,"Control Panel\\International","sTimeFormat",m_cSetting.GetCheck(i++) ? "HHmm":"HH:mm");
}
//取消任务栏的属性功能
{
Reg.SetDwordValue(HKEY_CURRENT_USER,"Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer","NoSetTaskbar",(DWORD)m_cSetting.GetCheck(i++));
}
}
Change=TRUE;
CPropertyPage::OnOK();
}
//选择组合框中另一系统文件夹
void CGeneral::OnSelchangeSpecialfold()
{
m_cFoldLocal.GetWindowText(Folder[CurSel]);
int Index=m_cSpecFold.GetCurSel();
if (Index==CB_ERR)
return;
CurSel=m_cSpecFold.GetItemData(Index);
m_cFoldLocal.SetWindowText(Folder[CurSel]);
}
//改变系统目录
void CGeneral::OnChangelocal()
{
CString Title;
CString Dir;
m_cSpecFold.GetLBText(m_cSpecFold.GetCurSel(),Title);
Title="请选择"+Title+"目录:";
m_cFoldLocal.GetWindowText(Dir);
CFolderDialog FolderDialog(Dir,Title);
if (FolderDialog.DoModal()==IDOK)
{
m_cFoldLocal.SetWindowText(FolderDialog.GetPathName());
OnChange();
}
}
void CGeneral::OnDestroy()
{
if (Change)
{
if ( ((CWinSetApp*)AfxGetApp())->GetModifyflag())
{
CString String;
String.LoadString(IDS_APPCAPTION);
RegEdit Reg;
DWORD Prompt=TRUE,wordbuf;
if (Reg.GetDwordValue(HKEY_CURRENT_USER,"SoftWare\\XKSoft\\WinSet","PromptReboot",wordbuf))
Prompt=wordbuf;
if (Prompt)
{
if (MessageBox("您已修改了 Windows 设置,有些设置选项需要重新\n启动 Windows 后才能生效,是否想立即重新启动 ?",String,MB_YESNO|MB_ICONQUESTION)==IDYES)
{
ExitWindowsEx(EWX_SHUTDOWN|EWX_REBOOT,0);
}
}
}
}
CPropertyPage::OnDestroy();
}
void CGeneral::OnLChange()
{
SetModified(TRUE);
Modify=TRUE;
}
void CGeneral::OnChange()
{
((CWinSetApp *)AfxGetApp())->SetModifyflag();
SetModified(TRUE);
Modify=TRUE;
}
//打开系统文件夹
void CGeneral::OnOpenSysfolder()
{
CString Folder;
m_cFoldLocal.GetWindowText(Folder);
::ShellExecute(NULL,"explore",Folder,NULL,NULL,SW_SHOW);
}
//恢复原默认系统文件夹
void CGeneral::OnRestoreSysfolder()
{
CString Folder,SrcFolder;
char SysDir[MAX_PATH];
GetWindowsDirectory(SysDir,512);
m_cFoldLocal.GetWindowText(SrcFolder);
Folder=SysDir;
Folder+="\\";
switch (CurSel)
{
case 0:
Folder="C:\\Program Files";
break;
case 1:
Folder="C:\\Program Files\\Common Files";
break;
case 2:
Folder+="Desktop";
break;
case 3:
Folder+="Start Menu";
break;
case 4:
Folder+="Favorites";
break;
case 5:
Folder="C:\\My Documents";
break;
case 6:
Folder+="Recent";
break;
case 7:
Folder+="SendTo";
break;
case 8:
Folder+="Start Menu\\Programs\\启动";
break;
case 9:
Folder+="Start Menu\\Programs";
break;
case 10:
Folder+="ShellNew";
break;
default:
{
Folder=SrcFolder;
}
}
if (Folder!=SrcFolder)
{
m_cFoldLocal.SetWindowText(Folder);
OnChange();
}
}
//设置颜色
HBRUSH CGeneral::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CPropertyPage::OnCtlColor(pDC, pWnd, nCtlColor);
int FrmIDs[]={IDC_SETFRM,IDC_SYSFOLDERFRM,IDC_USERINFOFRM};
for (int i=0;i<sizeof(FrmIDs)/sizeof(int);i++)
{
if (*GetDlgItem(FrmIDs[i])==*(pWnd))
{
pDC->SetTextColor(GetSysColor(COLOR_HIGHLIGHT));
break;
}
}
return hbr;
}
void CGeneral::OnMouseMove(UINT nFlags, CPoint point)
{
int IDs[]={ IDC_SYSVERST,IDC_USERNAMEST,IDC_COMPANYNAMEST,IDC_SPECIALFOLDST,IDC_FOLDERLOCALST};
int StrIDs[]={IDS_SYSVERST,IDS_USERNAMEST,IDS_COMPANYNAMEST,IDS_SPECIALFOLD,IDS_FOLDERLOCAL};
CRect rc;
CString Str;
bool Prompt=FALSE;
for (int i=0;i<sizeof(IDs)/sizeof(int);i++)
{
GetDlgItem(IDs[i])->GetWindowRect(&rc);
ScreenToClient(&rc);
if (rc.PtInRect(point))
{
Str.LoadString(StrIDs[i]);
((CWinSetDlg*)AfxGetMainWnd())->SetStatusText(Str);
Prompt=TRUE;
break;
}
}
if (!Prompt)
{
Str.LoadString(IDS_READY);
((CWinSetDlg*)AfxGetMainWnd())->SetStatusText(Str);
}
CPropertyPage::OnMouseMove(nFlags, point);
}
void CGeneral::OnLButtonDblClk(UINT nFlags, CPoint point)
{
//显示隐藏状态条
((CWinSetDlg*)AfxGetMainWnd())->ShowStatusBar();
CPropertyPage::OnLButtonDblClk(nFlags, point);
}
BOOL CGeneral::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
int IDs[]={ IDC_SYSVER, IDC_USERNAME, IDC_ORGNAME, IDC_CHANGELOCAL, IDC_FOLDERLOCAL,IDC_SETUP, IDC_RESTORESYSPATH,IDC_OPENSYSFOLDER,IDC_SPECIALFOLD};
UINT StrIDs[]={IDS_SYSVERST,IDS_USERNAMEST,IDS_COMPANYNAMEST,IDS_CHANGESYSFOLDER,IDS_FOLDERLOCAL,IDS_SETUPOPTION,IDS_RESTORESYSPATH,IDS_OPENSYSFOLDER,IDS_SPECIALFOLD};
CRect rc;
CString Str;
bool Prompt=FALSE;
for (int i=0;i<sizeof(IDs)/sizeof(int);i++)
{
if (*GetDlgItem(IDs[i])==*pWnd)
{
Str.LoadString(StrIDs[i]);
((CWinSetDlg*)AfxGetMainWnd())->SetStatusText(Str);
Prompt=TRUE;
break;
}
}
return CPropertyPage::OnSetCursor(pWnd, nHitTest, message);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -