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

📄 myset.cpp

📁 对教之初考试系统的补丁,适用于无盘站.在教之初考试系统的4.5版中,出现了一些管理员操作方面的不足之处,于是予补充.
💻 CPP
字号:
// MySet.cpp : 实现文件
//

#include "stdafx.h"
#include "KYJXExam2006sp3.h"
#include "MySet.h"
#include ".\myset.h"


// CMySet 对话框

IMPLEMENT_DYNAMIC(CMySet, CDialog)
CMySet::CMySet(CWnd* pParent /*=NULL*/)
	: CDialog(CMySet::IDD, pParent)
{
}

CMySet::~CMySet()
{
}

void CMySet::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	DDX_Control(pDX, IDC_CHECK1, m_autoboot);
	DDX_Control(pDX, IDC_CHECK2, m_autorestor);
	DDX_Control(pDX, IDC_CHECK3, m_restormin);
	DDX_Control(pDX, IDC_CHECK4, m_restoresc);
	DDX_Control(pDX, IDC_CHECK5, m_savemin);
}


BEGIN_MESSAGE_MAP(CMySet, CDialog)
	ON_BN_CLICKED(IDCANCEL, OnBnClickedCancel)
	ON_BN_CLICKED(IDOK, OnBnClickedOk)
	ON_BN_CLICKED(IDC_SAVESET, OnBnClickedSaveset)
	ON_BN_CLICKED(IDC_BROWSE1, OnBnClickedBrowse1)
	ON_BN_CLICKED(IDC_BROWSE2, OnBnClickedBrowse2)
	ON_BN_CLICKED(IDC_BROWSE3, OnBnClickedBrowse3)
	ON_BN_CLICKED(IDC_BROWSE4, OnBnClickedBrowse4)
	ON_BN_CLICKED(IDC_BROWSE5, OnBnClickedBrowse5)
	ON_BN_CLICKED(IDC_BROWSE6, OnBnClickedBrowse6)
	ON_BN_CLICKED(IDC_CHECK3, OnBnClickedCheck3)
	ON_BN_CLICKED(IDC_CHECK4, OnBnClickedCheck4)
	ON_BN_CLICKED(IDC_CHECK2, OnBnClickedCheck2)
END_MESSAGE_MAP()


// CMySet 消息处理程序

void CMySet::OnBnClickedCancel()
{
	// TODO: 在此添加控件通知处理程序代码
	OnCancel();
}

void CMySet::OnBnClickedOk()
{
	// TODO: 在此添加控件通知处理程序代码
	OnOK();
}

void CMySet::OnBnClickedSaveset()
{
	CStringArray path;
	CString str(_T(""));
	GetDlgItemText(IDC_PATH1,str);
	path.Add(str);
	GetDlgItemText(IDC_PATH2,str);
	path.Add(str);
	GetDlgItemText(IDC_PATH3,str);
	path.Add(str);
	GetDlgItemText(IDC_PATH4,str);
	path.Add(str);
	GetDlgItemText(IDC_PATH5,str);
	path.Add(str);
	GetDlgItemText(IDC_PATH6,str);
	path.Add(str);
	GetDlgItemText(IDC_USERNAME,str);
	CString username=str;//待检查的用户名
	path.Add(str);
	GetDlgItemText(IDC_USERPASSWORD,str);
	CString userpassword=str;//待检查的密码1
	path.Add(str);
	if(m_autoboot.GetCheck())
		path.Add(_T("1"));
	else
		path.Add(_T("0"));
	if(m_autorestor.GetCheck())
		path.Add(_T("1"));
	else
		path.Add(_T("0"));
	if(m_restormin.GetCheck())
		path.Add(_T("1"));
	else
		path.Add(_T("0"));
	if(m_restoresc.GetCheck())
		path.Add(_T("1"));
	else
		path.Add(_T("0"));
	if(m_savemin.GetCheck())
		path.Add(_T("1"));
	else
		path.Add(_T("0"));
	if(path[0].IsEmpty())
	{
		AfxMessageBox("必须选择服务端考试主目录!");
		GotoDlgCtrl(GetDlgItem(IDC_BROWSE1));
		path.RemoveAll();
		return;
	}
	if(path[1].IsEmpty())
	{
		AfxMessageBox("必须选择服务端考生数据存放目录!");
		GotoDlgCtrl(GetDlgItem(IDC_BROWSE2));
		path.RemoveAll();
		return;
	}
	if(path[2].IsEmpty())
	{
		AfxMessageBox("必须选择客户端考试主目录!");
		GotoDlgCtrl(GetDlgItem(IDC_BROWSE3));
		path.RemoveAll();
		return;
	}
	if(path[3].IsEmpty())
	{
		AfxMessageBox("必须选择客户端考生数据暂存目录!");
		GotoDlgCtrl(GetDlgItem(IDC_BROWSE4));
		path.RemoveAll();
		return;
	}
	if(path[4].IsEmpty())
	{
		AfxMessageBox("必须选择服务端考试备份目录!");
		GotoDlgCtrl(GetDlgItem(IDC_BROWSE5));
		path.RemoveAll();
		return;
	}
	if(path[5].IsEmpty())
	{
		AfxMessageBox("必须选择客户端考试备份目录!");
		GotoDlgCtrl(GetDlgItem(IDC_BROWSE6));
		path.RemoveAll();
		return;
	}
	int n,m;
	for(n=0;n<5;n++)
		for(m=0;m<5;m++)
			if(n!=m)
				if(path[n]==path[m])
				{
					AfxMessageBox("所有路径不能存在重复项!");
					return;
				}
	if(username.IsEmpty())
	{
		AfxMessageBox("用户名不能为空!");
		GotoDlgCtrl(GetDlgItem(IDC_USERNAME));
		path.RemoveAll();
		return;
	}
	CString userpassword1;//待检查的密码2
	GetDlgItemText(IDC_USERPASSWORD1,userpassword1);
	if(userpassword1!=userpassword)
	{
		AfxMessageBox("两次密码不一致!");
		GotoDlgCtrl(GetDlgItem(IDC_USERPASSWORD));
		path.RemoveAll();
		return;
	}
	CRegKey  regKey;
	LONG lRet=regKey.Open(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\KYJXExam2006sp3");
	if(lRet!=ERROR_SUCCESS)
	{
		regKey.Open(HKEY_LOCAL_MACHINE,"Software");
		lRet=regKey.Create(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\KYJXExam2006sp3");
	}
	int x=(int)path.GetCount();
	CString value(_T(""));
	for(n=0;n<x;n++)
	{
		if(n<6)
			value.Format("dir%d",n+1);
		else
		{
			switch(n)
			{
			case 6 :
				value=_T("UserName");
				break;
			case 7 :
				value=_T("UserPassword");
				break;
			case 8 :
				value=_T("AutoBoot");
				break;
			case 9 :
				value=_T("AutoRestor");
				break;
			case 10 :
				value=_T("RestorMin");
				break;
			case 11 :
				value=_T("RestorEsc");
				break;
			case 12 :
				value=_T("SaveMin");
				break;
			}
		}
		regKey.SetValue(path[n],value);
	}
	regKey.Close();
	path.RemoveAll();
}

CString CMySet::GetBrowsePath()
{
	CString m_path(_T(""));
	LPMALLOC lpMalloc;
	CHAR szDisplayName[MAX_PATH];
	CHAR szBuffer[MAX_PATH];
	if ( ::SHGetMalloc( &lpMalloc ) != NOERROR )
	{
		AfxMessageBox( "执行路径错误,请退出后重试!" );
		return CString();
	}
	BROWSEINFO BrowseInfo;
	ZeroMemory(&BrowseInfo,sizeof(BROWSEINFO));
	BrowseInfo.hwndOwner      = GetSafeHwnd();
	BrowseInfo.pidlRoot       = NULL;
	BrowseInfo.pszDisplayName = szDisplayName;
	//BrowseInfo.lpszTitle      = "==== 选择源文件所在位置 ====";
	//BrowseInfo.ulFlags        = BIF_USENEWUI;
	BrowseInfo.lpfn           = NULL;
	BrowseInfo.lParam         = 0;
	LPITEMIDLIST lpItemIDList;
	if ( ( lpItemIDList = ::SHBrowseForFolder( &BrowseInfo ) ) != NULL )
	{
		if ( ::SHGetPathFromIDList( lpItemIDList, szBuffer ) )
		{
			if ( szBuffer[0] == '\0' )
			{
				AfxMessageBox( "无效路径,重新选择!");
				return CString();
			}
			m_path = szBuffer;
		}
		else
		{
			AfxMessageBox( "无效路径,请重新选择!");
			return CString();
		}
	}
	lpMalloc->Free( lpItemIDList );
	lpMalloc->Release();
	if(m_path.GetLength()<1)
		return CString();
	if(m_path.GetAt(m_path.GetLength()-1)!='\\')
		m_path+="\\";
	return m_path;
}

void CMySet::OnBnClickedBrowse1()
{
	CString path=GetBrowsePath();
	if(!path.IsEmpty())
	{
		SetDlgItemText(IDC_PATH1,path);
	}
}

void CMySet::OnBnClickedBrowse2()
{
	CString path=GetBrowsePath();
	if(!path.IsEmpty())
	{
		SetDlgItemText(IDC_PATH2,path);
	}
}

void CMySet::OnBnClickedBrowse3()
{
	CString path=GetBrowsePath();
	if(!path.IsEmpty())
	{
		SetDlgItemText(IDC_PATH3,path);
	}
}

void CMySet::OnBnClickedBrowse4()
{
	CString path=GetBrowsePath();
	if(!path.IsEmpty())
	{
		SetDlgItemText(IDC_PATH4,path);
	}
}

void CMySet::OnBnClickedBrowse5()
{
	CString path=GetBrowsePath();
	if(!path.IsEmpty())
	{
		SetDlgItemText(IDC_PATH5,path);
	}
}

void CMySet::OnBnClickedBrowse6()
{
	CString path=GetBrowsePath();
	if(!path.IsEmpty())
	{
		SetDlgItemText(IDC_PATH6,path);
	}
}

BOOL CMySet::OnInitDialog()
{
	CDialog::OnInitDialog();
	SetDlgItemText(IDC_PATH1,theApp.ReadRegeditPath("dir1"));
	SetDlgItemText(IDC_PATH2,theApp.ReadRegeditPath("dir2"));
	SetDlgItemText(IDC_PATH3,theApp.ReadRegeditPath("dir3"));
	SetDlgItemText(IDC_PATH4,theApp.ReadRegeditPath("dir4"));
	SetDlgItemText(IDC_PATH5,theApp.ReadRegeditPath("dir5"));
	SetDlgItemText(IDC_PATH6,theApp.ReadRegeditPath("dir6"));
	SetDlgItemText(IDC_USERNAME,theApp.ReadRegeditPath("UserName"));
	SetDlgItemText(IDC_USERPASSWORD,theApp.ReadRegeditPath("UserPassword"));
	SetDlgItemText(IDC_USERPASSWORD1,theApp.ReadRegeditPath("UserPassword"));
	m_autoboot.SetCheck(atoi(theApp.ReadRegeditPath("AutoBoot")));
	m_autorestor.SetCheck(atoi(theApp.ReadRegeditPath("AutoRestor")));
	m_restormin.SetCheck(atoi(theApp.ReadRegeditPath("RestorMin")));
	m_restoresc.SetCheck(atoi(theApp.ReadRegeditPath("RestorEsc")));
	m_savemin.SetCheck(atoi(theApp.ReadRegeditPath("SaveMin")));

	return TRUE;
}

void CMySet::OnBnClickedCheck3()
{
	if(m_restormin.GetCheck())
		m_restoresc.SetCheck(0);
}

void CMySet::OnBnClickedCheck4()
{
	if(m_restoresc.GetCheck())
	{
		m_autorestor.SetCheck(0);
		m_restormin.SetCheck(0);
	}
}

void CMySet::OnBnClickedCheck2()
{
	if(m_autorestor.GetCheck())
		m_restoresc.SetCheck(0);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -