Files
coco df489d5640 a
2026-07-03 16:05:30 +08:00

623 lines
20 KiB
C++

// PasswordMng.cpp : implementation file
//
#include "stdafx.h"
#include "PasswordMng.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CPasswordMng dialog
extern int g_iUILanguage;
extern CGeoMativeApp theApp;
extern HHOOK hHook;
extern LRESULT __stdcall CBTHookProc(long nCode, WPARAM wParam, LPARAM lParam);
extern BOOL GetSubStringInHeadAndTail(const CString& szSource, CString& szSub, const CString& szHead, const CString& szTail);
CPasswordMng::CPasswordMng(_ConnectionPtr& pConnection,CWnd* pParent /*=NULL*/)
: CDialog(CPasswordMng::IDD, pParent)
{
//{{AFX_DATA_INIT(CPasswordMng)
m_edConfirmPass = _T("");
m_edNewPass = _T("");
m_edOldPass = _T("");
//}}AFX_DATA_INIT
m_pConnection = pConnection;
m_strDBGD10Paswword = _T("");
m_strDBGeoPassword = _T("");
m_mapPasswordMng.clear();
}
void CPasswordMng::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CPasswordMng)
DDX_Control(pDX, IDC_COMBO_MACHINE_ID, m_cmbMachineID);
DDX_Control(pDX, IDC_COMBO_PASS_OPER_TYPE, m_cmbOperType);
DDX_Control(pDX, IDC_COMBO_MACHINE_TYPE, m_cmbMachineType);
DDX_Text(pDX, IDC_EDIT_CONFIRM_PASS, m_edConfirmPass);
DDV_MaxChars(pDX, m_edConfirmPass, 50);
DDX_Text(pDX, IDC_EDIT_NEW_PASS, m_edNewPass);
DDV_MaxChars(pDX, m_edNewPass, 50);
DDX_Text(pDX, IDC_EDIT_OLD_PASS, m_edOldPass);
DDV_MaxChars(pDX, m_edOldPass, 50);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CPasswordMng, CDialog)
//{{AFX_MSG_MAP(CPasswordMng)
ON_CBN_SELCHANGE(IDC_COMBO_PASS_OPER_TYPE, OnSelchangeComboPassOperType)
ON_CBN_SELCHANGE(IDC_COMBO_MACHINE_TYPE, OnSelchangeComboMachineType)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CPasswordMng message handlers
void CPasswordMng::OnSelchangeComboPassOperType()
{
// TODO: Add your control notification handler code here
int nCurSel = m_cmbOperType.GetCurSel();
if (CB_ERR == nCurSel)
{
if (LANG_ZHCN == g_iUILanguage)
AfxMessageBox(_T("请正确选择操作类型!"));
else
MessageBoxEx(NULL, _T("Please chose operation type correctly!"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
return;
}
m_edOldPass.Empty();
m_edNewPass.Empty();
m_edConfirmPass.Empty();
UpdateData(FALSE);
ShowPasswordInfo(nCurSel);
}
BOOL CPasswordMng::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
m_mapPasswordMng.clear();
theApp.GetPasswordPtr(m_mapPasswordMng);
//get online device
CPtrArray olDevList;
CDevice* pDev = NULL;
olDevList.RemoveAll();
theApp.m_pDevManager->GetOLDevList(&olDevList);
int iIndex = (int)VAL_ZERO;
m_cmbMachineID.Clear();
while (iIndex < olDevList.GetSize())
{
pDev = NULL;
pDev = (CDevice*)olDevList.GetAt(iIndex);
if (PZ_STATE_NEW != pDev->m_uState)
{
m_cmbMachineID.AddString(pDev->m_szDevSN);
m_cmbMachineID.SetItemDataPtr(m_cmbMachineID.GetCount() - 1, pDev);
}
iIndex++;
}
m_cmbMachineID.SetCurSel(0);
//set machine type info
m_cmbMachineType.Clear();
m_cmbMachineType.AddString(_T("Geomative"));
m_cmbMachineType.AddString(_T("GD-20"));
m_cmbMachineType.SetCurSel(0);
//set operation type
m_cmbOperType.Clear();
m_cmbOperType.AddString(_T("Create Password"));
m_cmbOperType.AddString(_T("Modify Password"));
m_cmbOperType.AddString(_T("Delete Password"));
m_cmbOperType.SetCurSel(0);
//disable gd10 devcie_name infomation
m_cmbMachineID.EnableWindow(FALSE);
UpdateData(FALSE);
ShowPasswordInfo(0);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
//DEL void CPasswordMng::GetDBPasswordInfo()
//DEL {
//DEL _RecordsetPtr pRecInfo= NULL;
//DEL pRecInfo.CreateInstance(_uuidof(Recordset));
//DEL m_mapPasswordMng.clear();
//DEL CString strDevName;
//DEL CString strGeoName = _T("Geomative");
//DEL try
//DEL {
//DEL pRecInfo->Open(_T("select * from password_info"), _variant_t((IDispatch*)m_pConnection, true),
//DEL adOpenStatic, adLockOptimistic, adCmdText);
//DEL bool bFirstGeo = false;
//DEL STDBPasswordInfo stDBPassInfo;
//DEL while ((short)VAL_ZERO == pRecInfo->adoEOF)
//DEL {
//DEL //只获取第一个Geomative的密码
//DEL if (!bFirstGeo && (1 == pRecInfo->GetCollect(_T("DevType")).iVal) )
//DEL {
//DEL stDBPassInfo.nTableID = (int)(pRecInfo->GetCollect(_T("ID")).iVal);
//DEL stDBPassInfo.strPassword.Empty();
//DEL stDBPassInfo.strPassword = (CString)(LPCTSTR)(_bstr_t)pRecInfo->GetCollect(_T("Password"));
//DEL bFirstGeo = true;
//DEL m_mapPasswordMng.insert(std::make_pair(strGeoName,stDBPassInfo));
//DEL }
//DEL
//DEL //获取GD10主机的密码,如果这里存在相同的主机名,则只获取第一个主机的密码
//DEL if (2 == pRecInfo->GetCollect(_T("DevType")).iVal)
//DEL {
//DEL stDBPassInfo.strPassword.Empty();
//DEL strDevName.Empty();
//DEL stDBPassInfo.nTableID = (int)(pRecInfo->GetCollect(_T("ID")).iVal);
//DEL strDevName = (CString)(LPCTSTR)(_bstr_t)pRecInfo->GetCollect(_T("DevName"));
//DEL stDBPassInfo.strPassword = (CString)(LPCTSTR)(_bstr_t)pRecInfo->GetCollect(_T("Password"));
//DEL m_mapPasswordMng.insert(std::make_pair(strDevName,stDBPassInfo));
//DEL }
//DEL pRecInfo->MoveNext();
//DEL }
//DEL
//DEL }
//DEL catch (_com_error e)
//DEL {
//DEL hHook = SetWindowsHookEx(WH_CBT,(HOOKPROC)CBTHookProc,AfxGetInstanceHandle(),NULL);
//DEL AfxMessageBox(e.Description());
//DEL m_pConnection->RollbackTrans();
//DEL }
//DEL pRecInfo->Close();
//DEL return;
//DEL
//DEL }
void CPasswordMng::OnSelchangeComboMachineType()
{
// TODO: Add your control notification handler code here
int nCurSel = m_cmbMachineType.GetCurSel()+1;
if (enGeomativeType == nCurSel)
{
m_cmbMachineID.EnableWindow(FALSE);
}
else if (enGD10Type == nCurSel)
{
m_cmbMachineID.EnableWindow(TRUE);
}
else
{
if (LANG_ZHCN == g_iUILanguage)
AfxMessageBox(_T("不支持设备类型"));
else
MessageBoxEx(NULL, _T("Not Support Machine-type!"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
}
}
bool CPasswordMng::OperatePassword(int nOperateType, STOperDBPassword stOperDB, CString strOldPassword)
{
CString strSql = _T("");
CString strErr = _T("");
switch(nOperateType)
{
case enCreatePassword:
if (1 == stOperDB.nDevType)
{
strSql.Format(_T("insert into password_info(DevType, DevPassword) values(%d, '%s')"),
stOperDB.nDevType, stOperDB.strPassword);
}
else if(2 == stOperDB.nDevType)
{
strSql.Format(_T("insert into password_info(DevType,DevPassword,DevName) values(%d,'%s','%s')"),
stOperDB.nDevType, stOperDB.strPassword,stOperDB.strDevName);
}
else
{
strErr.Empty();
if (LANG_ZHCN == g_iUILanguage)
{
strErr.Format(_T("不支持设备类型%d"), stOperDB.nDevType);
AfxMessageBox(strErr.GetBuffer(0));
}
else
{
strErr.Format(_T("Not support device_type = %d"), stOperDB.nDevType);
MessageBoxEx(NULL, strErr, STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
}
return false;
}
break;
case enModifyPassword:
strSql.Format(_T("update password_info set DevPassword = '%s' where ID = %d"),
stOperDB.strPassword, stOperDB.nTableID);
break;
case enDeletePassword:
strSql.Format(_T("delete from password_info where ID = %d"),stOperDB.nTableID);
break;
default:
if (LANG_ZHCN == g_iUILanguage)
{
strErr.Format(_T("不支持操作数据库类型%d"), stOperDB.nDevType);
AfxMessageBox(strErr.GetBuffer(0));
}
else
{
strErr.Format(_T("Not support operation_db_type = %d"), nOperateType);
MessageBoxEx(NULL, strErr, STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
}
return false;
}
_CommandPtr pCmdPro = NULL;
pCmdPro.CreateInstance(_uuidof(Command));
pCmdPro->ActiveConnection = m_pConnection;
try
{
CString szOrder=_T("");
CString szResBuff = _T("");
CString szRes = _T("");
CString strShowInfo = _T("");
//如果这个时候是GD10,则下发相应的命令给GD10,
CDevice *pDev = NULL;
//如果是GD10的设备,首先进行密码的校验
if (enGD10Type == (m_cmbMachineType.GetCurSel()+1))
{
pDev = (CDevice*)(m_cmbMachineID.GetItemDataPtr(m_cmbMachineID.GetCurSel()));
if (NULL == pDev)
{
if (LANG_ZHCN == g_iUILanguage)
{
AfxMessageBox(_T("获取设备指针为空"));
}
else
{
MessageBoxEx(NULL, _T("Get Device-Ptr Failed!!!"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
}
return false;
}
szOrder.Format(_T("check_password(\"%s\")\r\n"),strOldPassword);
if (!pDev->ExecuteOrder(szOrder, ">", &szResBuff))
{
if (LANG_ZHCN == g_iUILanguage)
{
strShowInfo.Format(_T("执行命令 %s 失败!!!"), szOrder);
AfxMessageBox(strShowInfo.GetBuffer(0));
}
else
{
strShowInfo.Format(_T("Excute cmd %s failed!!!"), szOrder);
MessageBoxEx(NULL, strShowInfo, STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
}
return false;
}
if (-1 == szResBuff.Find("]"))
{
if (LANG_ZHCN == g_iUILanguage)
AfxMessageBox(_T("此功能在设备中不支持,请检查您的gd-20版本!"));
else
MessageBoxEx(NULL, _T("This function is not supported in device, please check your gd-20 version!"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
return false;
}
GetSubStringInHeadAndTail(szResBuff, szRes, _T("["), _T("]"));
if (_T("1") != szRes)
{
//strShowInfo.Empty();
//strShowInfo.Format(_T("check old password error in gd-10"));
if (LANG_ZHCN == g_iUILanguage)
AfxMessageBox(_T("检查旧密码错误在gd-10"));
else
MessageBoxEx(NULL, _T("Check old password error in gd-10"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
return false;
}
}
m_pConnection->BeginTrans();
/* strSql=_T("select * from password_info");*/
pCmdPro->CommandText = strSql.AllocSysString();
pCmdPro->Execute(NULL, NULL, adCmdText);
if (enGD10Type == (m_cmbMachineType.GetCurSel()+1))
{
szOrder.Empty();
szResBuff.Empty();
szRes.Empty();
pDev = (CDevice*)(m_cmbMachineID.GetItemDataPtr(m_cmbMachineID.GetCurSel()));
//如果新设置的密码为空,则表示无密码,底下没有密码的时候设置一个空格字符即可
CString strDevPass = stOperDB.strPassword.IsEmpty() ? _T(" ") : stOperDB.strPassword;
szOrder.Format(_T("set_param(\"password,%s;\")\r\n"),strDevPass);
if (!pDev->ExecuteOrder(szOrder, "]", &szResBuff))
{
strShowInfo.Empty();
if (LANG_ZHCN == g_iUILanguage)
{
strShowInfo.Format(_T("执行命令 %s 错误!!!"), szOrder);
AfxMessageBox(strShowInfo.GetBuffer(0));
}
else
{
strShowInfo.Format(_T("Excute cmd %s failed!!!"), szOrder);
MessageBoxEx(NULL, strShowInfo, STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
}
return false;
}
GetSubStringInHeadAndTail(szResBuff, szRes, _T("["), _T("]"));
if (_T("1") != szRes)
{
if (LANG_ZHCN == g_iUILanguage)
AfxMessageBox(_T("GD-10设备设置密码错误"));
else
MessageBoxEx(NULL, _T("Set password error in gd-10!"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
m_pConnection->RollbackTrans();
return false;
}
}
m_pConnection->CommitTrans();
return true;
}
catch (_com_error e)
{
hHook = SetWindowsHookEx(WH_CBT,(HOOKPROC)CBTHookProc,AfxGetInstanceHandle(),NULL);
AfxMessageBox(e.Description());
m_pConnection->RollbackTrans();
return false;
}
return true;
}
void CPasswordMng::OnOK()
{
// TODO: Add extra validation here
if (!UpdateData(TRUE))
{
if (LANG_ZHCN == g_iUILanguage)
AfxMessageBox(_T("数据输入错误"));
else
MessageBoxEx(NULL, _T("Data input error!"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
return;
}
//在这里需要加个对密码的校验判断的功能,不能出现特殊字符
STOperDBPassword stOperDBPass;
stOperDBPass.nDevType = m_cmbMachineType.GetCurSel()+1;
//如果选择的是GD10,则获取设备名称
if (enGD10Type == stOperDBPass.nDevType)
{
if ((m_cmbMachineID.GetCount() < 1) || (CB_ERR == m_cmbMachineID.GetCurSel()))
{
if (LANG_ZHCN == g_iUILanguage)
AfxMessageBox(_T("设备类型信息错误"));
else
MessageBoxEx(NULL, _T("Machine_type information error!"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
return ;
}
m_cmbMachineID.GetLBText(m_cmbMachineID.GetCurSel(),stOperDBPass.strDevName);
}
CString strKey = (enGD10Type == stOperDBPass.nDevType) ? stOperDBPass.strDevName : _T("Geomative");
std::map<CString,STDBPasswordInfo>::iterator iter = m_mapPasswordMng.find(strKey);
int nOperTypeSel = m_cmbOperType.GetCurSel();
CString strOldSetPass = _T("");
switch (nOperTypeSel)
{
case enCreatePassword:
if (m_edNewPass.IsEmpty())
{
if (LANG_ZHCN == g_iUILanguage)
AfxMessageBox(_T("新密码不能为空!"));
else
MessageBoxEx(NULL, _T("New password can not be empty!"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
return;
}
if (iter != m_mapPasswordMng.end())
{
if (LANG_ZHCN == g_iUILanguage)
AfxMessageBox(_T("设备已设置密码!"));
else
MessageBoxEx(NULL, _T("There is already set password for device!"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
return;
}
if (!VerifyPassword(m_edNewPass))
{
if (LANG_ZHCN == g_iUILanguage)
AfxMessageBox(_T("输入新密码无效,密码必须由数字和字母组成!"));
else
MessageBoxEx(NULL, _T("Input new password illeagal,password must be compose of number and letter!"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
return;
}
stOperDBPass.strPassword = m_edNewPass;
break;
case enModifyPassword:
if (iter == m_mapPasswordMng.end())
{
if (LANG_ZHCN == g_iUILanguage)
AfxMessageBox(_T("设备密码未设置,无需修改!"));
else
MessageBoxEx(NULL, _T("The password have not be set for device,no need to modify!"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
return;
}
if (m_edNewPass.IsEmpty() || m_edOldPass.IsEmpty() || m_edConfirmPass.IsEmpty())
{
if (LANG_ZHCN == g_iUILanguage)
AfxMessageBox(_T("设置密码错误,请检查!"));
else
MessageBoxEx(NULL, _T("Set password error,please check!"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
return;
}
if (m_edNewPass != m_edConfirmPass)
{
if (LANG_ZHCN == g_iUILanguage)
AfxMessageBox(_T("请确保新密码等于确认密码!"));
else
MessageBoxEx(NULL, _T("Plase ensure new password equal to confirm password!"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
return;
}
if (!VerifyPassword(m_edNewPass))
{
if (LANG_ZHCN == g_iUILanguage)
AfxMessageBox(_T("输入新密码无效,密码必须由数字和字母组成!"));
else
MessageBoxEx(NULL, _T("Input new password illeagal,password must be compose of number and letter!"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
return;
}
if (m_edOldPass != iter->second.strPassword)
{
//如果此时和数据库的密码对不上,如果是GD10,还需要对和GD10主机去校验密码
//如果GD10主机密码通过,则认为校验密码通过
if (enGeomativeType == (m_cmbMachineType.GetCurSel()+1))
{
if (LANG_ZHCN == g_iUILanguage)
AfxMessageBox(_T("旧密码错误"));
else
MessageBoxEx(NULL, _T("Old password error!!!"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
return;
}
}
stOperDBPass.nTableID = iter->second.nTableID;
stOperDBPass.strPassword = m_edNewPass;
strOldSetPass = m_edOldPass;
break;
case enDeletePassword:
if (iter == m_mapPasswordMng.end())
{
if (LANG_ZHCN == g_iUILanguage)
AfxMessageBox(_T("设备密码未设置,无需删除!"));
else
MessageBoxEx(NULL, _T("The password have not be set for device,no need to delete!"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
return;
}
//在这里为什么使用m_edNewPass的原因参考ShowPasswordInfo中的注释
if (m_edNewPass != iter->second.strPassword)
{
if (enGeomativeType == (m_cmbMachineType.GetCurSel()+1))
{
if (LANG_ZHCN == g_iUILanguage)
AfxMessageBox(_T("旧密码错误"));
else
MessageBoxEx(NULL, _T("Old password error!!!"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
return;
}
}
//如果是删除的话,只需要获取该条记录的ID即可
stOperDBPass.nTableID = iter->second.nTableID;
strOldSetPass = m_edNewPass;
break;
default:
if (LANG_ZHCN == g_iUILanguage)
AfxMessageBox(_T("不支持操作类型"));
else
MessageBoxEx(NULL, _T("Not support operation-type"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
return;
}
if (!OperatePassword(nOperTypeSel,stOperDBPass,strOldSetPass))
{
if (LANG_ZHCN == g_iUILanguage)
AfxMessageBox(_T("操作失败"));
else
MessageBoxEx(NULL, _T("Operation failed!!!"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
return;
}
if (LANG_ZHCN == g_iUILanguage)
AfxMessageBox(_T("操作成功"));
else
MessageBoxEx(NULL, _T("Operation success!"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
CDialog::OnOK();
}
bool CPasswordMng::VerifyPassword(CString strPass)
{
int nLen = strPass.GetLength();
char chInfo;
for (int i = 0; i < nLen; i++)
{
chInfo = strPass[i];
if (!((chInfo >= '0' && chInfo <= '9') || (chInfo >= 'a' && chInfo <= 'z') || (chInfo >= 'A' && chInfo <= 'Z')))
{
return false;
}
}
return true;
}
void CPasswordMng::ShowPasswordInfo(int nOperType)
{
switch (nOperType)
{
case enCreatePassword:
GetDlgItem(IDC_STATIC_NEW_PASS)->SetWindowText(_T("New Password:"));
GetDlgItem(IDC_EDIT_OLD_PASS)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_EDIT_CONFIRM_PASS)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC_OLD_PASS)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC_CONFIRM_PASS)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_EDIT_NEW_PASS)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATIC_NEW_PASS)->ShowWindow(SW_SHOW);
break;
case enModifyPassword:
GetDlgItem(IDC_STATIC_NEW_PASS)->SetWindowText(_T("New Password:"));
GetDlgItem(IDC_EDIT_OLD_PASS)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_EDIT_CONFIRM_PASS)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATIC_OLD_PASS)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATIC_CONFIRM_PASS)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_EDIT_NEW_PASS)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATIC_NEW_PASS)->ShowWindow(SW_SHOW);
break;
case enDeletePassword:
//为了界面的没关,在这里只显示中间的密码控件
//同时将界面上的提示由New Password 改为 Old Password
//但是在转换为其它的操作方式适合需要改回去,那么在删除密码时获取的密码内容实际是来自于m_edNewPass
GetDlgItem(IDC_STATIC_NEW_PASS)->SetWindowText(_T("Old Password:"));
GetDlgItem(IDC_EDIT_OLD_PASS)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_EDIT_CONFIRM_PASS)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC_OLD_PASS)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC_CONFIRM_PASS)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_EDIT_NEW_PASS)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATIC_NEW_PASS)->ShowWindow(SW_SHOW);
break;
default:
CString strErr = _T("");
if (LANG_ZHCN == g_iUILanguage)
{
strErr.Format(_T("不支持操作数据库类型 = %d"), nOperType);
AfxMessageBox(strErr.GetBuffer(0));
}
else
{
strErr.Format(_T("Not support operation_db_type = %d"), nOperType);
MessageBoxEx(NULL, strErr, STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
}
break;
}
return;
}