⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 general.cpp

📁 visual c++ 实例编程
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// 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 + -