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

📄 editdlg.cpp

📁 Password Safe Password Safe is a password database utility. Users can keep their passwords securely
💻 CPP
字号:
/// \file EditDlg.cpp//-----------------------------------------------------------------------------#include "stdafx.h"#include "PasswordSafe.h"#include "ThisMfcApp.h"#include "DboxMain.h"#include "EditDlg.h"#include "PwFont.h"#include "OptionsPasswordPolicy.h"#include "corelib/PWCharPool.h"#include "corelib/PwsPlatform.h"#include "corelib/PWSprefs.h"#if defined(POCKET_PC)  #include "pocketpc/PocketPC.h"#endif#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif#if defined(POCKET_PC)  #define SHOW_PASSWORD_TXT	_T("S")  #define HIDE_PASSWORD_TXT	_T("H")#else  #define SHOW_PASSWORD_TXT	_T("&Show Password")  #define HIDE_PASSWORD_TXT	_T("&Hide Password")#endifvoid CEditDlg::DoDataExchange(CDataExchange* pDX){   CDialog::DoDataExchange(pDX);   DDX_Text(pDX, IDC_NOTES, (CString &)m_notes);   DDX_Text(pDX, IDC_PASSWORD, (CString &)m_password);   DDX_Text(pDX, IDC_USERNAME, (CString &)m_username);   DDX_Text(pDX, IDC_TITLE, (CString &)m_title);   DDX_Text(pDX, IDC_GROUP, (CString &)m_group);}BEGIN_MESSAGE_MAP(CEditDlg, CDialog)   ON_BN_CLICKED(IDC_SHOWPASSWORD, OnShowpassword)   ON_BN_CLICKED(ID_HELP, OnHelp)   ON_BN_CLICKED(IDC_RANDOM, OnRandom)#if defined(POCKET_PC)   ON_WM_SHOWWINDOW()   ON_EN_SETFOCUS(IDC_PASSWORD, OnPasskeySetfocus)   ON_EN_KILLFOCUS(IDC_PASSWORD, OnPasskeyKillfocus)#endifEND_MESSAGE_MAP()void CEditDlg::OnShowpassword() {   UpdateData(TRUE);   CMyString wndName;   GetDlgItem(IDC_SHOWPASSWORD)->GetWindowText(wndName);   if (wndName == SHOW_PASSWORD_TXT)   {      ShowPassword();   }   else if (wndName == HIDE_PASSWORD_TXT)   {      m_realpassword = m_password;      HidePassword();   }   else      AfxMessageBox(_T("Error in retrieving window text"));   UpdateData(FALSE);}voidCEditDlg::OnOK() {   UpdateData(TRUE);   /*    *  If the password is shown it may have been edited,    *  so save the current text.    */   if (! m_isPwHidden)      m_realpassword = m_password;   //Check that data is valid   if (m_title.IsEmpty())   {      AfxMessageBox(_T("This entry must have a title."));      ((CEdit*)GetDlgItem(IDC_TITLE))->SetFocus();      return;   }   if (m_password.IsEmpty())   {      AfxMessageBox(_T("This entry must have a password."));      ((CEdit*)GetDlgItem(IDC_PASSWORD))->SetFocus();      return;   }   //End check   DboxMain* pParent = (DboxMain*) GetParent();   ASSERT(pParent != NULL);   POSITION listindex = pParent->Find(m_group, m_title, m_username);   /*    *  If there is a matching entry in our list, and that    *  entry is not the same one we started editing, tell the    *  user to try again.    */   if ((listindex != NULL) &&       (m_listindex != listindex))   {      CMyString temp =         "An item with Group \"" + m_group	 + "\", Title \"" + m_title 	 + "\" and User Name \"" + m_username         + "\" already exists.";      AfxMessageBox(temp);      ((CEdit*)GetDlgItem(IDC_TITLE))->SetSel(MAKEWORD(-1, 0));      ((CEdit*)GetDlgItem(IDC_TITLE))->SetFocus();   }   else   {      app.m_pMainWnd = NULL;      CDialog::OnOK();   }}void CEditDlg::OnCancel() {   app.m_pMainWnd = NULL;   CDialog::OnCancel();}BOOL CEditDlg::OnInitDialog() {   CDialog::OnInitDialog();    SetPasswordFont(GetDlgItem(IDC_PASSWORD));   if (PWSprefs::GetInstance()->GetPref(PWSprefs::BoolPrefs::ShowPWDefault))   {      ShowPassword();   }   else   {      HidePassword();   }   UpdateData(FALSE);   return TRUE;}void CEditDlg::ShowPassword(void){   m_password = m_realpassword;   m_isPwHidden = false;   GetDlgItem(IDC_SHOWPASSWORD)->SetWindowText(HIDE_PASSWORD_TXT);   GetDlgItem(IDC_PASSWORD)->EnableWindow(TRUE);}void CEditDlg::HidePassword(void){   m_password = HIDDEN_PASSWORD;   m_isPwHidden = true;   GetDlgItem(IDC_SHOWPASSWORD)->SetWindowText(SHOW_PASSWORD_TXT);   GetDlgItem(IDC_PASSWORD)->EnableWindow(FALSE);}void CEditDlg::OnRandom() {  DboxMain* pParent = (DboxMain*) GetParent();  ASSERT(pParent != NULL);  bool is_override = (IsDlgButtonChecked(IDC_OVERRIDE_POLICY) == BST_CHECKED);  CMyString temp;  if (is_override) {    // Start with existing password policy    CPropertySheet optionsDlg(_T("Password Policy Override"), this);    COptionsPasswordPolicy  passwordpolicy;    PWSprefs *prefs = PWSprefs::GetInstance();    passwordpolicy.m_pwlendefault = prefs->      GetPref(PWSprefs::IntPrefs::PWLenDefault);    passwordpolicy.m_pwuselowercase = prefs->      GetPref(PWSprefs::BoolPrefs::PWUseLowercase);    passwordpolicy.m_pwuseuppercase = prefs->      GetPref(PWSprefs::BoolPrefs::PWUseUppercase);    passwordpolicy.m_pwusedigits = prefs->      GetPref(PWSprefs::BoolPrefs::PWUseDigits);    passwordpolicy.m_pwusesymbols = prefs->      GetPref(PWSprefs::BoolPrefs::PWUseSymbols);    passwordpolicy.m_pwusehexdigits = prefs->      GetPref(PWSprefs::BoolPrefs::PWUseHexDigits);    passwordpolicy.m_pweasyvision = prefs->      GetPref(PWSprefs::BoolPrefs::PWEasyVision);    // Display COptionsPasswordPolicy page    optionsDlg.AddPage(&passwordpolicy);    optionsDlg.m_psh.dwFlags |= PSH_NOAPPLYNOW; // remove "Apply Now" button    int rc = optionsDlg.DoModal();    if (rc == IDOK) {      CPasswordCharPool pwchars(				passwordpolicy.m_pwlendefault,				passwordpolicy.m_pwuselowercase,				passwordpolicy.m_pwuseuppercase,				passwordpolicy.m_pwusedigits,				passwordpolicy.m_pwusesymbols,				passwordpolicy.m_pwusehexdigits,				passwordpolicy.m_pweasyvision);      temp = pwchars.MakePassword();    }  }  // generate password according to current policy if !override or user cancelled policy dialog  if (temp.IsEmpty())    temp = pParent->GetPassword();  UpdateData(TRUE);  CMyString msg;  int nResponse;   //Ask if something's there  if (!m_password.IsEmpty())    {      msg =	_T("The randomly generated password is: \"")	+ temp	+ _T("\" \n(without the quotes). Would you like to use it?");      nResponse = MessageBox(msg,                              AfxGetAppName(),                             MB_ICONEXCLAMATION|MB_YESNO);    }  else     nResponse = IDYES;  if (nResponse == IDYES)    {      m_realpassword = temp;      CMyString wndName;      GetDlgItem(IDC_SHOWPASSWORD)->GetWindowText(wndName);      if (wndName == SHOW_PASSWORD_TXT)	{	  m_password = HIDDEN_PASSWORD;	}      else if (wndName == HIDE_PASSWORD_TXT)	{	  m_password = m_realpassword;	}      UpdateData(FALSE);    }  else if (nResponse == IDNO)    {    }}void CEditDlg::OnHelp() {#if defined(POCKET_PC)	CreateProcess( _T("PegHelp.exe"), _T("pws_ce_help.html#editview"), NULL, NULL, FALSE, 0, NULL, NULL, NULL, NULL );#else	::HtmlHelp(		NULL,		"pwsafe.chm::/html/pws_edit.htm",		HH_DISPLAY_TOPIC, 0);#endif}#if defined(POCKET_PC)/************************************************************************//* Restore the state of word completion when the password field loses   *//* focus.                                                               *//************************************************************************/void CEditDlg::OnPasskeyKillfocus(){	EnableWordCompletion( m_hWnd );}/************************************************************************//* When the password field is activated, pull up the SIP and disable    *//* word completion.                                                     *//************************************************************************/void CEditDlg::OnPasskeySetfocus(){	DisableWordCompletion( m_hWnd );}#endif//-----------------------------------------------------------------------------//-----------------------------------------------------------------------------

⌨️ 快捷键说明

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