📄 syssetup.cpp
字号:
// SysSetUp.cpp : implementation file
//
#include "stdafx.h"
#include "IPCount.h"
#include "SysSetUp.h"
#include "IPCountDlg.h"
#include "PreMoneySetup.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CSysSetUp dialog
CSysSetUp::CSysSetUp(CWnd* pParent /*=NULL*/)
: CDialog(CSysSetUp::IDD, pParent)
{
//{{AFX_DATA_INIT(CSysSetUp)
m_strCom = _T("");
m_strOName = _T("");
m_strOPswd1 = _T("");
m_strOPswd2 = _T("");
m_strLevel = _T("");
m_bCheckQuit = FALSE;
m_bCheckPrint = FALSE;
m_bCheckSaleCut = FALSE;
m_strComboGw1 = _T("1");
m_strComboGw2 = _T("2");
m_strComboLine = _T("8");
//}}AFX_DATA_INIT
lValue=0;
bOperSuccess=FALSE;
m_strCom="";
pdlg=new CPrintSet();
nPrintGridCount=0;
for (int k=0;k<10;k++)
strLanWidth[k]="";
}
void CSysSetUp::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CSysSetUp)
DDX_Control(pDX, IDC_COMBO_LINE, m_eComboLine);
DDX_Control(pDX, IDC_COMBO_GW2, m_eComboGw2);
DDX_Control(pDX, IDC_COMBO_LEVEL, m_LevelComb);
DDX_Text(pDX, IDC_EDIT_COM, m_strCom);
DDX_Text(pDX, IDC_EDIT_ONAME, m_strOName);
DDX_Text(pDX, IDC_EDIT_OPSWD1, m_strOPswd1);
DDX_Text(pDX, IDC_EDIT_OPSWD2, m_strOPswd2);
DDX_Control(pDX, IDC_MSFLEXGRID_USER, m_UserGrid);
DDX_CBString(pDX, IDC_COMBO_LEVEL, m_strLevel);
DDX_Check(pDX, IDC_CHECK_QUIT, m_bCheckQuit);
DDX_Check(pDX, IDC_CHECK_PRINT, m_bCheckPrint);
DDX_Check(pDX, IDC_CHECK_SALECUT, m_bCheckSaleCut);
DDX_CBString(pDX, IDC_COMBO_GW1, m_strComboGw1);
DDV_MaxChars(pDX, m_strComboGw1, 3);
DDX_CBString(pDX, IDC_COMBO_GW2, m_strComboGw2);
DDV_MaxChars(pDX, m_strComboGw2, 3);
DDX_CBString(pDX, IDC_COMBO_LINE, m_strComboLine);
DDV_MaxChars(pDX, m_strComboLine, 2);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CSysSetUp, CDialog)
//{{AFX_MSG_MAP(CSysSetUp)
ON_BN_CLICKED(IDC_BUTTON_ADD, OnOAdd)
ON_BN_CLICKED(IDC_BUTTON_MOD, OnOMod)
ON_BN_CLICKED(IDC_BUTTON_DEL, OnODel)
ON_EN_CHANGE(IDC_EDIT_COM, OnChangeCom)
ON_BN_CLICKED(IDC_BUTTON_SEARCH, OnSearch)
ON_BN_CLICKED(IDC_RADIO_DOWN, OnRadioDown)
ON_BN_CLICKED(IDC_RADIO_NODOWN, OnRadioNodown)
ON_BN_CLICKED(IDC_BUTTON_SYS_SETUP, OnSysSetup)
ON_BN_CLICKED(IDC_CHECK_QUIT, OnCheckQuit)
ON_BN_CLICKED(IDC_CHECK_PRINT, OnCheckPrint)
ON_BN_CLICKED(IDC_BUTTON_PRINT, OnButtonPrint)
ON_BN_CLICKED(IDC_CHECK_SALECUT, OnCheckSalecut)
ON_CBN_SELCHANGE(IDC_COMBO_LINE, OnSelchangeComboLine)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSysSetUp message handlers
BOOL CSysSetUp::OnInitDialog()
{
CDialog::OnInitDialog();
CIPCountDlg * mdlg;
mdlg=(CIPCountDlg *)GetParent();
// TODO: Add extra initialization here
SetIcon(AfxGetApp()->LoadIcon(IDI_ICON_SETUP),TRUE);
SetIcon(AfxGetApp()->LoadIcon(IDI_ICON_SETUP),FALSE);
int nCom=GetFlag();
if(nCom==0)
nCom=1;
m_strCom.Format("%d",nCom);
m_OStrCom=m_strCom;
m_UserGrid.SetTextArray(0,"用户名");
m_UserGrid.SetTextArray(1,"密码");
m_UserGrid.SetTextArray(2,"用户级别");
m_UserGrid.SetColWidth(0,1730);
m_UserGrid.SetColWidth(1,1280);
m_UserGrid.SetColWidth(2,1378);
m_LevelComb.AddString("超级管理员");
m_LevelComb.AddString("营业员");
m_strLevel="营业员";
int nQuitFlag=GetQuitFlag();//退出强行扎帐
if(nQuitFlag==1)
{
m_bCheckQuit=TRUE;
}
if(GetPrintFlag()==1)//是否启用立即打印
{
m_bCheckPrint=TRUE;
}
if(GetSaleCutFlag()==1)//是否启用优惠时段
{
m_bCheckSaleCut=TRUE;
}
m_strComboLine.Format("%d", mdlg->nOperateLines);
m_strComboGw1.Format("%d", mdlg->nGwCom[0]);
if (mdlg->nOperateLines == 8)
{
m_strComboGw2 = "";
m_eComboGw2.EnableWindow(FALSE);
}
else
{
m_strComboGw2 .Format("%d", mdlg->nGwCom[1]);
}
int RadioNum=GetRadio();
CButton * b1;
switch(RadioNum)
{
case 0:
case 1:
b1=(CButton *)GetDlgItem(IDC_RADIO_DOWN);
b1->SetCheck(1);
break;
case 2:
b1=(CButton *)GetDlgItem(IDC_RADIO_NODOWN);
b1->SetCheck(1);
break;
}
UpdateData(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
//添加用户
void CSysSetUp::OnOAdd()
{
// TODO: Add your control notification handler code here
int res=-1;
UpdateData(TRUE);
CIPCountDlg * mdlg;
mdlg=(CIPCountDlg *)GetParent();
if(mdlg==NULL)
return ;
//获得文件的当前路径
TCHAR pFileName[MAX_PATH];
GetModuleFileName(NULL,pFileName,MAX_PATH);
if(strchr(pFileName,'\\'))
*strrchr(pFileName,'\\')='\0';
strcat(pFileName,"\\IPUser.dat");
mdlg->set.Open(pFileName);
while(!mdlg->set.IsEOF())
{
res=strcmp(mdlg->set.UserName,m_strOName);
mdlg->set.MoveNext();
if(res==0)
{
break;
}
}
if(res==0)
{
bOperSuccess=FALSE;
AfxMessageBox("用户已存在!");
mdlg->set.Close();
return;
}
if(m_strOName.IsEmpty()||m_strOPswd1.IsEmpty())
{
bOperSuccess=FALSE;
AfxMessageBox("用户名和密码不能为空!");
mdlg->set.Close();
return;
}
else if(strcmp(m_strOPswd1,m_strOPswd2)!=0)
{
bOperSuccess=FALSE;
AfxMessageBox("两次输入的密码不一致!");
mdlg->set.Close();
return;
}
else
{
bOperSuccess=TRUE;
AfxMessageBox("添加新用户成功!");
mdlg->set.UserName=m_strOName;
mdlg->set.UserPswd=m_strOPswd1;
mdlg->set.UserLevel=m_strLevel;
mdlg->set.AddNew();
mdlg->set.Close();
}
if(bOperSuccess)
OnSearch();
}
//修改用户密码
void CSysSetUp::OnOMod()
{
// TODO: Add your control notification handler code here
int res=-1;
UpdateData(TRUE);
CIPCountDlg * mdlg;
mdlg=(CIPCountDlg *)GetParent();
if(mdlg==NULL)
return ;
//获得文件的当前路径
TCHAR pFileName[MAX_PATH];
GetModuleFileName(NULL,pFileName,MAX_PATH);
if(strchr(pFileName,'\\'))
*strrchr(pFileName,'\\')='\0';
strcat(pFileName,"\\IPUser.dat");
mdlg->set.Open(pFileName);
while(!mdlg->set.IsEOF())
{
res=strcmp(mdlg->set.UserName,m_strOName);
if(res==0)
{
break;
}
mdlg->set.MoveNext();
}
if(res==0)
{
if(m_strOPswd1.IsEmpty())
{
bOperSuccess=FALSE;
AfxMessageBox("密码不能为空!");
mdlg->set.Close();
return;
}
if(strcmp(m_strOPswd1,m_strOPswd2)!=0)
{
bOperSuccess=FALSE;
AfxMessageBox("两次输入的密码不一致!");
mdlg->set.Close();
return;
}
else
{
bOperSuccess=TRUE;
mdlg->set.UserPswd=m_strOPswd1;
mdlg->set.UserLevel=m_strLevel;
if(mdlg->set.Update())
AfxMessageBox("修改信息成功!");
mdlg->set.Close();
}
}
else
{
bOperSuccess=FALSE;
AfxMessageBox("用户不存在!");
mdlg->set.Close();
}
if(bOperSuccess)
OnSearch();
}
//删除用户
void CSysSetUp::OnODel()
{
// TODO: Add your control notification handler code here
int res=-1;
UpdateData(TRUE);
CIPCountDlg * mdlg;
mdlg=(CIPCountDlg *)GetParent();
if(mdlg==NULL)
return ;
//获得文件的当前路径
TCHAR pFileName[MAX_PATH];
GetModuleFileName(NULL,pFileName,MAX_PATH);
if(strchr(pFileName,'\\'))
*strrchr(pFileName,'\\')='\0';
strcat(pFileName,"\\IPUser.dat");
mdlg->set.Open(pFileName);
int nUserCount=0;
while(!mdlg->set.IsEOF())
{
if(strcmp(mdlg->set.UserLevel,"超级管理员")==0)
nUserCount++;//超级用户个数
mdlg->set.MoveNext();
}
mdlg->set.MoveFirst();
while(!mdlg->set.IsEOF())
{
res=strcmp(mdlg->set.UserName,m_strOName);
if(res==0)
{
//判断是否超级用户
if(strcmp(mdlg->set.UserLevel,"营业员")==0)
nUserCount=100;//如果是营业员,将该值设为大于1即可
break;
}
mdlg->set.MoveNext();
}
if(res==0)
{
if(nUserCount>1)
{
if(mdlg->set.Delete())
{
bOperSuccess=TRUE;
AfxMessageBox("用户删除成功!");
}
}
else
AfxMessageBox("至少必须保留一个超级用户");
mdlg->set.Close();
}
else
{
bOperSuccess=FALSE;
AfxMessageBox("用户不存在!");
mdlg->set.Close();
}
if(bOperSuccess)
OnSearch();
}
//改变串口
void CSysSetUp::OnChangeCom()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CDialog::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
UpdateData(TRUE);
CIPCountDlg * mdlg;
mdlg=(CIPCountDlg *)GetParent();
if(mdlg==NULL)
return ;
if(mdlg->bOpenSale)
{
m_strCom=m_OStrCom;//恢复到改变前得值
UpdateData(FALSE);
AfxMessageBox("请先退出营业管理!");
return;
}
int nCom=atoi(m_strCom);
if((nCom>4)||(nCom<1))
{
m_strCom=m_OStrCom;//恢复到改变前得值
UpdateData(FALSE);
AfxMessageBox("请输入1-4之间的数字!");
return;
}
m_OStrCom=m_strCom;//给m_OStrCom 赋新值
//考虑用注册表保存串口修改数据
SetFlag(nCom);
}
//显示用户列表
void CSysSetUp::OnSearch()
{
// TODO: Add your control notification handler code here
CIPCountDlg * mdlg;
mdlg=(CIPCountDlg *)GetParent();
if(mdlg==NULL)
return ;
ResetGrid(lValue);
lValue=0;
//获得文件的当前路径
TCHAR pFileName[MAX_PATH];
GetModuleFileName(NULL,pFileName,MAX_PATH);
if(strchr(pFileName,'\\'))
*strrchr(pFileName,'\\')='\0';
strcat(pFileName,"\\IPUser.dat");
mdlg->set.Open(pFileName);
while(!mdlg->set.IsEOF())
{
lValue++;
m_UserGrid.SetTextMatrix(lValue,0,mdlg->set.UserName);
m_UserGrid.SetTextMatrix(lValue,1,mdlg->set.UserPswd);
m_UserGrid.SetTextMatrix(lValue,2,mdlg->set.UserLevel);
mdlg->set.MoveNext();
}
mdlg->set.Close();
}
//打开注册表
void CSysSetUp::OpenKey(HKEY hKey,
LPCTSTR lpSubKey)
{
CloseKey();
if( ::RegOpenKeyEx(HKEY_LOCAL_MACHINE,
(LPCTSTR)lpSubKey,
0,
KEY_READ | KEY_WRITE,
&m_hKey) != ERROR_SUCCESS) {
if( ERROR_SUCCESS != ::RegCreateKey(
HKEY_LOCAL_MACHINE,
(LPCTSTR)lpSubKey,
&m_hKey))
{;}
}
}
//设置键值
void CSysSetUp::SetKey(
LPCTSTR lpName,
DWORD dwType,
LPCTSTR lpData,
DWORD cbData )
{
if(::RegSetValueEx(m_hKey,
lpName,
0,
REG_SZ,
(unsigned char *)lpData,
cbData) != ERROR_SUCCESS)
{;}
}
void CSysSetUp::CloseKey()
{
if (m_hKey == NULL)
return ; // Not Need To Close
if(::RegCloseKey(m_hKey) != ERROR_SUCCESS)
{;}
else
m_hKey = NULL;
}
void CSysSetUp::QueryKey(
LPCTSTR lpName,
DWORD dwType,
LPBYTE lpValue,
DWORD lpcbValue)
{
::RegQueryValueEx(m_hKey,
lpName,
0,
&dwType,
lpValue,
&lpcbValue);
}
void CSysSetUp::SetItem(int nValue, const CString &sKey, const CString &sName)
{
CString sValue;
sValue.Format("%d", nValue);
OpenKey(HKEY_LOCAL_MACHINE, sKey);
SetKey(sName, REG_SZ, (LPCTSTR)sValue, sValue.GetLength());
CloseKey();
}
int CSysSetUp::GetItem(const CString &sKey, const CString &sName)
{
CString sValue;
LPSTR QuerySet = NULL;
DWORD cbSize;
OpenKey(HKEY_LOCAL_MACHINE, sKey);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -