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

📄 finddlg.cpp

📁 Password Safe Password Safe is a password database utility. Users can keep their passwords securely
💻 CPP
字号:
// FindDlg.cpp : implementation file//#include "stdafx.h"#include "passwordsafe.h"#if defined(POCKET_PC)  #include "pocketpc/resource.h"#else  #include "resource.h"#endif#include "FindDlg.h"#include "DboxMain.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif/////////////////////////////////////////////////////////////////////////////// CFindDlg dialogCFindDlg *CFindDlg::self = NULL; // for Singleton patternvoid CFindDlg::Doit(CWnd *pParent){  if (self == NULL) {    self = new CFindDlg(pParent);    if (self != NULL)      if (self->Create(CFindDlg::IDD))	self->ShowWindow(SW_SHOW);  } else {    self->BringWindowToTop();  }}CFindDlg::CFindDlg(CWnd* pParent /*=NULL*/)  : super(CFindDlg::IDD, pParent), m_indices(NULL),    m_lastshown(-1), m_numFound(0),    m_last_search_text(_T("")), m_last_cs_search(FALSE){  //{{AFX_DATA_INIT(CFindDlg)  m_cs_search = FALSE;  m_search_text = _T("");  m_status = _T("");	//}}AFX_DATA_INIT}CFindDlg::~CFindDlg(){  delete[] m_indices;  self = NULL;}void CFindDlg::DoDataExchange(CDataExchange* pDX){	super::DoDataExchange(pDX);	//{{AFX_DATA_MAP(CFindDlg)	DDX_Check(pDX, IDC_FIND_CS, m_cs_search);	DDX_Text(pDX, IDC_FIND_TEXT, m_search_text);#if !defined(POCKET_PC)	DDX_Text(pDX, IDC_STATUS, m_status);#endif	//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CFindDlg, super)	//{{AFX_MSG_MAP(CFindDlg)	ON_BN_CLICKED(IDOK, OnFind)#if defined(POCKET_PC)	ON_BN_CLICKED(IDCANCEL, OnCancel)#else	ON_BN_CLICKED(IDCANCEL, OnClose)#endif	//}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// CFindDlg message handlersvoid CFindDlg::OnFind() {  DboxMain* pParent = (DboxMain*) GetParent();  ASSERT(pParent != NULL);  const int numEntries = pParent->GetNumEntries();  if (numEntries == 0) {    // Right Thing would be to disable find menu item if list is empty    m_status = _T("Password list is empty.");    UpdateData(FALSE);    return;  }  UpdateData(TRUE);  if (m_search_text.IsEmpty()) {    m_status = _T("Please enter a search string");    UpdateData(FALSE);    return;  }  // If the user changes the search text or cs, then this is a new search:  if (m_search_text != m_last_search_text ||      m_cs_search != m_last_cs_search) {    m_last_search_text = m_search_text;    m_last_cs_search = m_cs_search;    m_lastshown = -1;  }  if (m_lastshown == -1) {    if (m_indices != NULL) {      // take care of the pathological case where someone added or deleted      // an entry while this dialog box is open      delete[] m_indices;    }    m_indices = new int[numEntries];    m_numFound = pParent->FindAll(m_search_text, m_cs_search, m_indices);    switch (m_numFound) {    case 0:      m_status = _T("No matches found.");      break;    case 1:      m_status = _T("Found 1 match.");      break;    default:      // {kjp} this kludge is needed because the declaration of CString in <afx.h> defines      // {kjp} FormatMessage as implemented, but if you take a look at the source for       // {kjp} CString in strex.cpp you'll see that it's only actully implemented if the      // {kjp} platform is not WinCE.  Methinks this is a bug in afx.h#if defined(POCKET_PC)      m_status.Format( _T("Found %d matches."), m_numFound );#else      m_status.FormatMessage(_T("Found %1!d! matches."), m_numFound);#endif      break;    }    UpdateData(FALSE);  } // m_lastshown == -1  // OK, so now we have a (possibly empty) list of items to select.  if (m_numFound > 0) {    m_lastshown = (m_lastshown + 1) % m_numFound; //from -1 to 0, cycle afterwards    pParent->SelectEntry(m_indices[m_lastshown], TRUE);  }  if (m_numFound > 1) {      SetDlgItemText(IDOK, _T("Find Next"));  }  // don't call super::OnOK - user will Cancel() to close dbox}#if defined(POCKET_PC)void CFindDlg::OnCancel(){	self = NULL;	super::DestroyWindow();}#elsevoid CFindDlg::OnClose() {  self = NULL;  super::OnCancel();}#endif

⌨️ 快捷键说明

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