📄 userdlg.cpp
字号:
// UserDlg.cpp : implementation file
//
#include "stdafx.h"
#include "车友.h"
#include "UserDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CUserDlg dialog
#include "LoginDlg.h"
CUserDlg::CUserDlg(DWORD dwUser, CWnd* pParent /*=NULL*/)
:m_dwUser(dwUser), CDialog(CUserDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CUserDlg)
m_udepwd = _T("");
m_udename = _T("");
m_udepwdr = _T("");
m_udeonp = _T("");
m_udenpr = _T("");
m_udenp = _T("");
//}}AFX_DATA_INIT
}
void CUserDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CUserDlg)
DDX_Control(pDX, IDC_UD_LIST, m_udlist);
DDX_Control(pDX, IDC_UD_CPURVIEW, m_udcpv);
DDX_Text(pDX, IDC_UD_ENP, m_udepwd);
DDV_MaxChars(pDX, m_udepwd, 16);
DDX_Text(pDX, IDC_UD_ENAME, m_udename);
DDV_MaxChars(pDX, m_udename, 18);
DDX_Text(pDX, IDC_UD_ENPR, m_udepwdr);
DDV_MaxChars(pDX, m_udepwdr, 16);
DDX_Text(pDX, IDC_UD_EONP, m_udeonp);
DDV_MaxChars(pDX, m_udeonp, 16);
DDX_Text(pDX, IDC_UD_EONPR, m_udenpr);
DDV_MaxChars(pDX, m_udenpr, 16);
DDX_Text(pDX, IDC_UD_EOP, m_udenp);
DDV_MaxChars(pDX, m_udenp, 16);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CUserDlg, CDialog)
//{{AFX_MSG_MAP(CUserDlg)
ON_BN_CLICKED(IDC_UD_BADD, OnUdBadd)
ON_BN_CLICKED(IDC_UD_BDEL, OnUdBdel)
ON_BN_CLICKED(IDC_UD_BHELP, OnUdBhelp)
ON_BN_CLICKED(IDC_UD_BMODIFY, OnUdBmodify)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CUserDlg message handlers
BOOL CUserDlg::OnInitDialog()
{
CDialog::OnInitDialog();
if(m_dwUser < 1)
{
GetDlgItem(IDC_UD_ENAME)->EnableWindow(FALSE);
GetDlgItem(IDC_UD_CPURVIEW)->EnableWindow(FALSE);
GetDlgItem(IDC_UD_ENP)->EnableWindow(FALSE);
GetDlgItem(IDC_UD_ENPR)->EnableWindow(FALSE);
GetDlgItem(IDC_UD_BADD)->EnableWindow(FALSE);
GetDlgItem(IDC_UD_BDEL)->EnableWindow(FALSE);
}
USERINFO theUser;
char * strOper[] = { {"信息录入员"},{"系统管理员"} };
UINT size = sizeof(USERINFO);
LPBYTE bt = new unsigned char[sizeof(theUser)];
CString strID;
strID.Format("User%04u",0);
int lastID;
lastID = AfxGetApp()->GetProfileInt("用户","LastID",0);
for(int i=0;i<lastID && AfxGetApp()->GetProfileBinary("用户",strID,&bt,&size);i++)
{
memcpy(&theUser,bt,sizeof(theUser));
CString strInfo;
strInfo.Format("%s [%s]",theUser.name,strOper[theUser.oper]);
m_udlist.AddString(strInfo);
strID.Format("User%04u",i+1);
}
if(lastID > 0)
m_udlist.SetCurSel(0);
delete [] bt;
m_udcpv.SetCurSel(0);
return TRUE;
}
void CUserDlg::OnUdBadd()
{
UpdateData();
char * strq[] = { {"信息录入员"},{"系统管理员"} };
int purview = m_udcpv.GetCurSel();
if(m_udename.IsEmpty())
{
MessageBox("请指定用户名称。","输入错误",MB_OK);//|MB_ICONQUESION);
GetDlgItem(IDC_UD_ENAME)->SetFocus();
return;
}
if(purview == -1)
{
MessageBox("请指定用户权限。","输入错误",MB_OK);//|MB_ICONQUESION);
GetDlgItem(IDC_UD_CPURVIEW)->SetFocus();
return;
}
if(m_udepwd.Compare(m_udepwdr))
{
MessageBox("两次输入的密码不一致,请重新输入。","密码验证错",MB_OK);//|MB_ICONQUESTION);
m_udepwd.Empty();
m_udepwdr.Empty();
UpdateData(FALSE);
GetDlgItem(IDC_UD_ENP)->SetFocus();
return;
}
int LastID = AfxGetApp()->GetProfileInt("用户","LastID",0);
CString strID;
strID.Format("User%04u",LastID);
USERINFO user;
ZeroMemory(&user,sizeof(user));
strcpy(user.name,m_udename);
user.oper = purview;
strcpy(user.password,m_udepwd);
if(AfxGetApp()->WriteProfileBinary("用户",strID,(LPBYTE)&user,sizeof(user)))
{
CString str = m_udename + " [" + strq[purview] + "]";
m_udlist.AddString(str);
LastID++;
AfxGetApp()->WriteProfileInt("用户","LastID",LastID);
}
else
{
MessageBox("数据写入出错。","错误",MB_OK|MB_ICONSTOP);
return;
}
m_udcpv.SetCurSel(0);
m_udename.Empty();
m_udepwd.Empty();
m_udepwdr.Empty();
UpdateData(FALSE);
}
void CUserDlg::OnUdBdel()
{
int s;
CString strValue;
s = m_udlist.GetCurSel();
if(s<0)
{
MessageBox("请从右下角的列表中选择一个要删除用户。","指定用户错",MB_OK|MB_ICONSTOP);
return;
}
if(s==0)
{
AfxMessageBox("为保证至少保留一个系统管理员,此用户不允许被删除,但您可以修改其密码。",MB_OK|MB_ICONSTOP);
return;
}
m_udlist.GetText(s,strValue);
strValue = "确认删除此用户(" + strValue + ")吗?";
if(MessageBox(strValue,"确认删除用户",MB_OKCANCEL|MB_ICONQUESTION) != IDOK)
return;
int nLastID = AfxGetApp()->GetProfileInt("用户","LastID",0);
if(! nLastID)
return;
HKEY key;
if(nLastID != (s+1))
{
strValue.Format("User%04u",nLastID-1);
USERINFO user;
UINT btsize = sizeof(user);
LPBYTE bt = new unsigned char[btsize];
AfxGetApp()->GetProfileBinary("用户",strValue,&bt,&btsize);
memcpy(&user,bt,btsize);
delete [] bt;
strValue.Format("User%04u",s);
AfxGetApp()->WriteProfileBinary("用户",strValue,(LPBYTE)&user,btsize);
}
nLastID--;
AfxGetApp()->WriteProfileInt("用户","LastID",nLastID);
strValue.Format("User%04u",nLastID);
::RegOpenKey(HKEY_USERS,".Default\\SoftWare\\HMN-SOFT\\车友\\用户",&key);
::RegDeleteValue(key,strValue);
::RegCloseKey(key);
m_udlist.DeleteString(s);
}
void CUserDlg::OnUdBhelp()
{
MessageBox("在“注销”或者“修改密码”之前,请首先从右下角的列表框里选择一个用户。","帮助信息",MB_OK);
}
void CUserDlg::OnUdBmodify()
{
UpdateData(TRUE);
int s = m_udlist.GetCurSel();
if(s<0)
{
MessageBox("请从右下角的列表中选择一个用户。","指定用户错",MB_OK|MB_ICONSTOP);
return;
}
CString str;
str.Format("User%04u",s);
USERINFO user;
UINT btsize = sizeof(user);
LPBYTE bt = new unsigned char[btsize];
AfxGetApp()->GetProfileBinary("用户",str,&bt,&btsize);
memcpy(&user,bt,btsize);
delete [] bt;
if(m_udenp.Compare(user.password))
{
AfxMessageBox("该用户的原密码不正确,请重新输入。",MB_OK|MB_ICONSTOP);
SetDlgItemText(IDC_UD_EOP,"");
GetDlgItem(IDC_UD_EOP)->SetFocus();
return;
}
if(m_udeonp.Compare(m_udenpr))
{
AfxMessageBox("两次输入的密码不一致,请重新输入。",MB_OK|MB_ICONSTOP);
SetDlgItemText(IDC_UD_EONP,"");
SetDlgItemText(IDC_UD_EONPR,"");
GetDlgItem(IDC_UD_EONP)->SetFocus();
return;
}
strcpy(user.password,m_udeonp);
AfxGetApp()->WriteProfileBinary("用户",str,(LPBYTE)&user,btsize);
AfxMessageBox("密码修改成功!请牢记。",MB_OK);
SetDlgItemText(IDC_UD_EOP,"");
SetDlgItemText(IDC_UD_EONP,"");
SetDlgItemText(IDC_UD_EONPR,"");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -