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

📄 usermanage.cpp

📁 这是一个变电站的监控程序
💻 CPP
字号:
// UserManage.cpp : implementation file
//

#include "stdafx.h"
#include "fert2000.h"
#include "UserManage.h"
#include "ChangePassword.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

extern int SetNtRegValue(LPCTSTR lpszSection,LPCTSTR lpszEntry,void *nValue,int WriteSize);
extern HKEY GetNtSectionKey(LPCTSTR lpszSection);
extern int QueryNtRegValue(LPCTSTR lpszSection, LPCTSTR lpszEntry,LPBYTE lpData,int QuerySize);
extern bool DelNtRegValue(LPCTSTR lpszSection, LPCTSTR lpszEntry);

/////////////////////////////////////////////////////////////////////////////
// CUserManage dialog


CUserManage::CUserManage(CWnd* pParent /*=NULL*/)
	: CDialog(CUserManage::IDD, pParent)
{
	//{{AFX_DATA_INIT(CUserManage)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}


void CUserManage::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CUserManage)
	DDX_Control(pDX, IDC_USER_NAME, m_UserName);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CUserManage, CDialog)
	//{{AFX_MSG_MAP(CUserManage)
	ON_BN_CLICKED(IDC_USER_ADD, OnUserAdd)
	ON_BN_CLICKED(IDC_PASS_MODI, OnPassModi)
	ON_LBN_SELCHANGE(IDC_USER_NAME, OnSelchangeUserName)
	ON_BN_CLICKED(IDC_USER_DEL, OnUserDel)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CUserManage message handlers

BOOL CUserManage::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	HKEY Key;
	BYTE UserNum=0;
	ULONG cbValueName=20,cbData=20;

	if (RegOpenKey(HKEY_CURRENT_USER,"FenlSys\\",&Key))
	{
		if (RegCreateKey(HKEY_CURRENT_USER,"FenlSys\\",&Key))
		{
			MessageBox("读写错误!","错误",MB_OK|MB_ICONSTOP);
			OnCancel();
		}
		RegCloseKey(Key);

		if (!SetNtRegValue("FenlSys\\","UserNum",(void*)&UserNum,1))
		{
			MessageBox("读写错误!","错误",MB_OK|MB_ICONSTOP);
			OnCancel();
		}
		return TRUE;	
	}
	RegCloseKey(Key);
	Query();
	OnSelchangeUserName();
/*	QueryNtRegValue("FenlSys\\","UserNum",&UserNum,1);
	if (bManage)
	{
		char UserName[7];
		BYTE Data[40];
		for (int j=1;j<UserNum+1;j++)
		{
			sprintf(UserName,"User%02d\0",j);
			QueryNtRegValue("FenlSys\\",(LPCTSTR)UserName,Data,40);
			m_UserName.AddString((char*)Data);
		}
	}else 
		m_UserName.AddString((LPTSTR)CurUserName);*/
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CUserManage::OnUserAdd() 
{
	// TODO: Add your control notification handler code here
	CChangePassword Dlg;
	Dlg.UserNameList = &m_UserName;
	Dlg.bAdd = true;
	Dlg.DoModal();
	Query();
	OnSelchangeUserName();
}

void CUserManage::OnPassModi() 
{
	CChangePassword Dlg;
	Dlg.UserNameList = &m_UserName;
	Dlg.bAdd = false;
	Dlg.DoModal();
}


void CUserManage::Query()
{
	BYTE UserNum = 0,i=0;
	QueryNtRegValue("FenlSys\\","UserNum",&UserNum,1);
	i=m_UserName.GetCount();
	for (int k=0;k<i;k++) m_UserName.DeleteString(0);
	char UserName[7];
	BYTE Data[41];
	for (int j=1;j<=UserNum;j++)
	{
		sprintf(UserName,"User%02d\0",j);
		QueryNtRegValue("FenlSys\\",(LPCTSTR)UserName,Data,41);
		m_UserName.AddString((char*)Data);
	}
	m_UserName.SetCurSel(0); 
	if (!bManage)
	{
		//m_UserName.AddString((LPTSTR)CurUserName.GetBufferSetLength(20));
		GetDlgItem(IDC_USER_DEL) ->EnableWindow(FALSE);
		GetDlgItem(IDC_USER_ADD)->EnableWindow(FALSE);
		m_UserName.SetCurSel(0);
	}
}


void CUserManage::OnSelchangeUserName() 
{
	// TODO: Add your control notification handler code here
	int CurNameNo = m_UserName.GetCurSel();
	CString CurName;
	m_UserName.GetText(CurNameNo,CurName); //.GetDlgItemText(CurNameNo,CurName);
	if (CurUserName == CurName) GetDlgItem(IDC_PASS_MODI)->EnableWindow(TRUE);
	else GetDlgItem(IDC_PASS_MODI)->EnableWindow(FALSE);
}

void CUserManage::OnUserDel() 
{
	int CurUserNo = m_UserName.GetCurSel();
	char UserName[7],PrintData[41],UserData[41];
    m_UserName.GetText(CurUserNo,UserData);
	if (CurUserName == UserData)
	{
		MessageBox("不能删除自己!");
		return;
	}
	sprintf(PrintData,"是否删除用户 %s \0",UserData);
	if (MessageBox(PrintData,"确认",MB_YESNO|MB_ICONSTOP)==IDYES)//?
	{
		BYTE UserNum;
		QueryNtRegValue("FenlSys\\","UserNum",&UserNum,1);
		CurUserNo ++;
		for (int i=CurUserNo;i<UserNum;i++)
		{
			sprintf(UserName,"User%02d",i+1);
			QueryNtRegValue("FenlSys\\",UserName,(BYTE*)UserData,41);
			sprintf(UserName,"User%02d",i);
			SetNtRegValue("FenlSys\\",UserName,(BYTE*)UserData,41);
		}
		sprintf(UserName,"User%02d",UserNum);
		DelNtRegValue("FenlSys\\",(LPCTSTR)UserName);
		UserNum--;
		SetNtRegValue("FenlSys\\","UserNum",(void*)&UserNum,1);
		Query();
		OnSelchangeUserName();
	}
}

⌨️ 快捷键说明

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