📄 general.cpp
字号:
// General.cpp : implementation file
//一般系统选项设置
#include "stdafx.h"
#include "winset.h"
#include "General.h"
#include "RegEdit.h"
#include "FolderDialog.h"
#include "WinSetDlg.h"
#include <shlobj.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CGeneral property page
IMPLEMENT_DYNCREATE(CGeneral, CPropertyPage)
CGeneral::CGeneral() : CPropertyPage(CGeneral::IDD)
{
m_psp.dwFlags &= ~(PSP_HASHELP);
//m_psp.dwFlags |=PSP_USEHICON ;
//m_psp.hIcon=AfxGetApp()->LoadIcon(IDI_GENERAL);
Change=Modify=FALSE;
Folder.SetSize(12);
}
CGeneral::~CGeneral()
{
}
void CGeneral::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CGeneral)
DDX_Control(pDX, IDC_SETUP, m_cSetting);
DDX_Control(pDX, IDC_FOLDERLOCAL, m_cFoldLocal);
DDX_Control(pDX, IDC_SPECIALFOLD, m_cSpecFold);
DDX_Text(pDX, IDC_USERNAME, m_sUserName);
DDX_Text(pDX, IDC_ORGNAME, m_sOrgName);
DDX_Text(pDX, IDC_SYSVER, m_sSysVer);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CGeneral, CPropertyPage)
//{{AFX_MSG_MAP(CGeneral)
ON_CBN_SELCHANGE(IDC_SPECIALFOLD, OnSelchangeSpecialfold)
ON_WM_DESTROY()
ON_BN_CLICKED(IDC_CHANGELOCAL, OnChangelocal)
ON_CONTROL( CLBN_CHKCHANGE, IDC_SETUP, OnChange )
ON_EN_CHANGE(IDC_ORGNAME, OnLChange)
ON_BN_CLICKED(IDC_OPENSYSFOLDER, OnOpenSysfolder)
ON_BN_CLICKED(IDC_RESTORESYSPATH, OnRestoreSysfolder)
ON_WM_CTLCOLOR()
ON_WM_MOUSEMOVE()
ON_WM_LBUTTONDBLCLK()
ON_EN_CHANGE(IDC_SYSVER, OnLChange)
ON_EN_CHANGE(IDC_USERNAME, OnLChange)
ON_WM_SETCURSOR()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CGeneral message handlers
BOOL CGeneral::OnInitDialog()
{
CPropertyPage::OnInitDialog();
RegEdit Reg;
CString String,Str;
DWORD wordbuf;
Reg.RootKey=HKEY_LOCAL_MACHINE;
if (Reg.OpenKey("Software\\Microsoft\\Windows\\CurrentVersion"))
{
Reg.ReadString("RegisteredOrganization",m_sOrgName);
Reg.ReadString("RegisteredOwner",m_sUserName);
Reg.ReadString("Version",m_sSysVer);
}
ITEMIDLIST Dir1;
char Ddir[256];
LPITEMIDLIST Dir=&Dir1;
int i=0,Index;
//程序文件夹
if (Reg.GetStringValue(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows\\CurrentVersion","ProgramFilesDir",String))
{
Folder[i]=String;
String.LoadString(IDS_PROGRAMFOLDER+i);
Index=m_cSpecFold.AddString(String);
m_cSpecFold.SetItemData(Index,i);
}
//公用文件夹
i++;
if (Reg.GetStringValue(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows\\CurrentVersion","CommonFilesDir",String))
{
Folder[i]=String;
String.LoadString(IDS_PROGRAMFOLDER+i);
Index=m_cSpecFold.AddString(String);
m_cSpecFold.SetItemData(Index,i);
}
Reg.RootKey=HKEY_CURRENT_USER;
Reg.OpenKey("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders");
//桌面文件夹
i++;
if (!Reg.ReadString("Desktop",String))
{
::SHGetSpecialFolderLocation(m_hWnd,CSIDL_DESKTOP,&Dir);
::SHGetPathFromIDList(Dir,Ddir);
String=Ddir;
}
Folder[i]=String;
String.LoadString(IDS_PROGRAMFOLDER+i);
Index=m_cSpecFold.AddString(String);
m_cSpecFold.SetItemData(Index,i);
//开始菜单文件夹
i++;
if (!Reg.ReadString("Start Menu",String))
{
::SHGetSpecialFolderLocation(m_hWnd,CSIDL_STARTMENU,&Dir);
::SHGetPathFromIDList(Dir,Ddir);
String=Ddir;
}
Folder[i]=String;
String.LoadString(IDS_PROGRAMFOLDER+i);
Index=m_cSpecFold.AddString(String);
m_cSpecFold.SetItemData(Index,i);
//收藏夹
i++;
if (Reg.ReadString("Favorites",String))
{
Folder[i]=String;
String.LoadString(IDS_PROGRAMFOLDER+i);
Index=m_cSpecFold.AddString(String);
m_cSpecFold.SetItemData(Index,i);
}
//我的文档
i++;
if (!Reg.ReadString("Personal",String))
{
::SHGetSpecialFolderLocation(m_hWnd,CSIDL_PERSONAL,&Dir);
::SHGetPathFromIDList(Dir,Ddir);
String=Ddir;
}
Folder[i]=String;
String.LoadString(IDS_PROGRAMFOLDER+i);
Index=m_cSpecFold.AddString(String);
m_cSpecFold.SetItemData(Index,i);
//最近文档
i++;
if (!Reg.ReadString("Recent",String))
{
::SHGetSpecialFolderLocation(m_hWnd,CSIDL_RECENT,&Dir);
::SHGetPathFromIDList(Dir,Ddir);
String=Ddir;
}
Folder[i]=String;
String.LoadString(IDS_PROGRAMFOLDER+i);
Index=m_cSpecFold.AddString(String);
m_cSpecFold.SetItemData(Index,i);
//发送到
i++;
if (!Reg.ReadString("SendTo",String))
{
::SHGetSpecialFolderLocation(m_hWnd,CSIDL_SENDTO,&Dir);
::SHGetPathFromIDList(Dir,Ddir);
String=Ddir;
}
Folder[i]=String;
String.LoadString(IDS_PROGRAMFOLDER+i);
Index=m_cSpecFold.AddString(String);
m_cSpecFold.SetItemData(Index,i);
//启动
i++;
if (!Reg.ReadString("Startup",String))
{
::SHGetSpecialFolderLocation(m_hWnd,CSIDL_STARTUP,&Dir);
::SHGetPathFromIDList(Dir,Ddir);
String=Ddir;
}
Folder[i]=String;
String.LoadString(IDS_PROGRAMFOLDER+i);
Index=m_cSpecFold.AddString(String);
m_cSpecFold.SetItemData(Index,i);
//程序组
i++;
if (!Reg.ReadString("Programs",String))
{
::SHGetSpecialFolderLocation(m_hWnd,CSIDL_PROGRAMS,&Dir);
::SHGetPathFromIDList(Dir,Ddir);
String=Ddir;
}
Folder[i]=String;
String.LoadString(IDS_PROGRAMFOLDER+i);
Index=m_cSpecFold.AddString(String);
m_cSpecFold.SetItemData(Index,i);
//文件模板
i++;
if (!Reg.ReadString("Templates",String))
{
::SHGetSpecialFolderLocation(m_hWnd,CSIDL_TEMPLATES,&Dir);
::SHGetPathFromIDList(Dir,Ddir);
String=Ddir;
}
Folder[i]=String;
String.LoadString(IDS_PROGRAMFOLDER+i);
Index=m_cSpecFold.AddString(String);
m_cSpecFold.SetItemData(Index,i);
//安装路径
i++;
if (Reg.GetStringValue(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Setup","SourcePath",String))
{
Folder[i]=String;
String.LoadString(IDS_PROGRAMFOLDER+i);
Index=m_cSpecFold.AddString(String);
m_cSpecFold.SetItemData(Index,i);
}
m_cSpecFold.SetCurSel(0);
m_cFoldLocal.SetWindowText(Folder[0]);
CurSel=0;
/* 设置列表框 */
BOOL YesNo;
i=0;
//菜单对齐方式
String.LoadString(IDS_MENUALIGNING);
m_cSetting.AddString(String);
::SystemParametersInfo(SPI_GETMENUDROPALIGNMENT,0,&YesNo,0);
m_cSetting.SetCheck(i++,YesNo);
//警告声音
String.LoadString(IDS_WARNBEEP);
m_cSetting.AddString(String);
::SystemParametersInfo(SPI_GETBEEP,0,&YesNo,0);
m_cSetting.SetCheck(i++,YesNo);
//窗口动画
{
ANIMATIONINFO WinAni;
String.LoadString(IDS_WINDOWANI);
m_cSetting.AddString(String);
WinAni.cbSize=sizeof(WinAni);
::SystemParametersInfo(SPI_GETANIMATION,0,&WinAni,0);
m_cSetting.SetCheck(i++,(BOOL)WinAni.iMinAnimate);
}
//快速关机
{
String.LoadString(IDS_FASTSHUTDOWN);
m_cSetting.AddString(String);
int FastBoot=0;
if (Reg.GetStringValue(HKEY_LOCAL_MACHINE,"System\\CurrentControlSet\\control\\Shutdown","FastReboot",String))
{
FastBoot=atoi(String);
}
m_cSetting.SetCheck(i++,FastBoot);
}
//数据光盘自动执行
{
char FlagChar;
char StrValue[4];
String.LoadString(IDS_AUTORUNDATACDROM);
m_cSetting.AddString(String);
Reg.GetBinaryValue(HKEY_CURRENT_USER,"Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer","NoDriveTypeAutoRun",StrValue);
FlagChar=(StrValue[0]>>5)&1;
m_cSetting.SetCheck(i++,!FlagChar);
}
//CD盘自动执行
{
if (Reg.GetStringValue(HKEY_CLASSES_ROOT,"AudioCD\\Shell","",Str))
{
String.LoadString(IDS_AUTOPLAYCD);
m_cSetting.AddString(String);
m_cSetting.SetCheck(i++,(Str!=""));
}
}
//删除快捷方式图标上的箭头
{
DWORD RegType;
String.LoadString(IDS_DELLNKARROW);
m_cSetting.AddString(String);
wordbuf=1;
Reg.RootKey=HKEY_CLASSES_ROOT;
if (Reg.OpenKey("piffile"))
{
if (Reg.QueryValue("IsShortcut",RegType))
wordbuf=0;
}
if (Reg.OpenKey("lnkfile"))
{
if (Reg.QueryValue("IsShortcut",RegType))
wordbuf=0;
}
m_cSetting.SetCheck(i++,(BOOL)wordbuf);
}
//退出时自动清除文档菜单
{
String.LoadString(IDS_EXITCLEANDOC);
m_cSetting.AddString(String);
if (!Reg.GetBinaryValue(HKEY_CURRENT_USER,"Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer","ClearRecentDocsOnExit",wordbuf))
wordbuf=0;
m_cSetting.SetCheck(i++,(BOOL)wordbuf);
}
//在桌面上显示Windows版本号
{
String.LoadString(IDS_SHOWVERATDSK);
m_cSetting.AddString(String);
if (!Reg.GetStringValue(HKEY_CURRENT_USER,"Control Panel\\desktop","PaintDesktopVersion",Str))
Str="0";
m_cSetting.SetCheck(i++,(Str=="1"));
}
//屏幕经常自动更新
{
String.LoadString(IDS_OFTENUPDATE);
m_cSetting.AddString(String);
if (!Reg.GetBinaryValue(HKEY_LOCAL_MACHINE,"System\\CurrentControlSet\\Control\\Update","UpdateMode",wordbuf))
wordbuf=1;
m_cSetting.SetCheck(i++,(BOOL)!wordbuf);
}
//修改任务栏时间格式为HHMM
{
String.LoadString(IDS_UPTIMEFORMAT);
m_cSetting.AddString(String);
if (!Reg.GetStringValue(HKEY_CURRENT_USER,"Control Panel\\International","sTimeFormat",Str))
Str="HH:mm";
m_cSetting.SetCheck(i++,(Str.CompareNoCase("HHmm")==0));
}
//取消任务栏的属性功能
{
String.LoadString(IDS_DISTASKATTRIB);
m_cSetting.AddString(String);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -