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

📄 general.cpp

📁 最新visualC++编程200例书籍源码包括对数据库的操作
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		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 + -