Condividi tramite


Classe CFindReplaceDialog

Consente di implementare le finestre di dialogo trova/sostituisci stringa standard nell'applicazione.

Sintassi

class CFindReplaceDialog : public CCommonDialog

Membri

Costruttori pubblici

Nome Descrizione
CFindReplaceDialog::CFindReplaceDialog Chiamare questa funzione per costruire un CFindReplaceDialog oggetto .

Metodi pubblici

Nome Descrizione
CFindReplaceDialog::Create Crea e visualizza una CFindReplaceDialog finestra di dialogo.
CFindReplaceDialog::FindNext Chiamare questa funzione per determinare se l'utente vuole trovare l'occorrenza successiva della stringa di ricerca.
CFindReplaceDialog::GetFindString Chiamare questa funzione per recuperare la stringa di ricerca corrente.
CFindReplaceDialog::GetNotifier Chiamare questa funzione per recuperare la FINDREPLACE struttura nel gestore messaggi registrato.
CFindReplaceDialog::GetReplaceString Chiamare questa funzione per recuperare la stringa di sostituzione corrente.
CFindReplaceDialog::IsTerminating Chiamare questa funzione per determinare se la finestra di dialogo termina.
CFindReplaceDialog::MatchCase Chiamare questa funzione per determinare se l'utente vuole corrispondere esattamente al caso della stringa di ricerca.
CFindReplaceDialog::MatchWholeWord Chiamare questa funzione per determinare se l'utente vuole corrispondere solo a parole intere.
CFindReplaceDialog::ReplaceAll Chiamare questa funzione per determinare se l'utente desidera sostituire tutte le occorrenze della stringa.
CFindReplaceDialog::ReplaceCurrent Chiamare questa funzione per determinare se l'utente desidera sostituire la parola corrente.
CFindReplaceDialog::SearchDown Chiamare questa funzione per determinare se l'utente vuole che la ricerca proceda verso il basso.

Membri dati pubblici

Nome Descrizione
CFindReplaceDialog::m_fr Struttura utilizzata per personalizzare un CFindReplaceDialog oggetto.

Osservazioni:

A differenza delle altre finestre di dialogo comuni di Windows, CFindReplaceDialog gli oggetti sono in modalitàless, consentendo agli utenti di interagire con altre finestre mentre sono sullo schermo. Esistono due tipi di oggetti: finestre di CFindReplaceDialog dialogo Trova e Finestre di dialogo Trova/Sostituisci. Anche se le finestre di dialogo consentono all'utente di immettere le stringhe di ricerca e ricerca/sostituzione, non eseguono alcuna delle funzioni di ricerca o sostituzione. È necessario aggiungerli all'applicazione.

Per costruire un CFindReplaceDialog oggetto, utilizzare il costruttore fornito (senza argomenti). Poiché si tratta di una finestra di dialogo senza modalità, allocare l'oggetto nell'heap usando l'operatore new anziché nello stack.

Dopo aver costruito un CFindReplaceDialog oggetto, è necessario chiamare la funzione crea membro per creare e visualizzare la finestra di dialogo.

Utilizzare la struttura m_fr per inizializzare la finestra di dialogo prima di chiamare Create. La m_fr struttura è di tipo FINDREPLACE. Per altre informazioni su questa struttura, vedere Windows SDK.

Affinché la finestra padre venga notificata le richieste di ricerca/sostituzione, è necessario utilizzare la funzione Windows RegisterWindowMessage e utilizzare la macro ON_REGISTERED_MESSAGE mappa messaggi nella finestra cornice che gestisce il messaggio registrato.

È possibile determinare se l'utente ha deciso di terminare la finestra di dialogo con la IsTerminating funzione membro.

CFindReplaceDialog si basa sul file COMMDLG.DLL fornito con Windows 3.1 e versioni successive.

Per personalizzare la finestra di dialogo, derivare una classe da CFindReplaceDialog, fornire un modello di finestra di dialogo personalizzato e aggiungere una mappa messaggi per elaborare i messaggi di notifica dai controlli estesi. Tutti i messaggi non elaborati devono essere passati alla classe base.

La personalizzazione della funzione hook non è necessaria.

Per altre informazioni sull'uso CFindReplaceDialogdi , vedere Classi di dialoghi comuni.

Gerarchia di ereditarietà

CObject

CCmdTarget

CWnd

CDialog

CCommonDialog

CFindReplaceDialog

Requisiti

Intestazione: afxdlgs.h

CFindReplaceDialog::CFindReplaceDialog

Costruisce un oggetto CFindReplaceDialog.

CFindReplaceDialog();

Osservazioni:

Poiché l'oggetto CFindReplaceDialog è una finestra di dialogo senza modalità, è necessario crearla nell'heap usando l'operatore new .

Durante la distruzione, il framework tenta di eseguire un delete this; oggetto sul puntatore alla finestra di dialogo. Se è stata creata la finestra di dialogo nello stack, il this puntatore non esiste e il comportamento non definito può risultare.

Per altre informazioni sulla costruzione di CFindReplaceDialog oggetti, vedere la panoramica di CFindReplaceDialog . Usare la funzione membro CFindReplaceDialog::Create per visualizzare la finestra di dialogo.

Esempio

// m_pFRDlg is a pointer to a class derived from CFindReplaceDialog
// which defines variables used by the FINDREPLACE structure.
// InitFindReplaceDlg creates a CFindReplaceDialog and initializes
// the m_fr with the data members from the derived class
void CMyRichEditView::InitFindReplaceDlg()
{
   if (NULL == m_pFRDlg)
   {
      m_pFRDlg = new CMyFindReplaceDialog(); // Must be created on the heap

      m_pFRDlg->Create(TRUE, _T(""), _T(""), FR_DOWN, this);

      m_pFRDlg->m_fr.lStructSize = sizeof(FINDREPLACE);
      m_pFRDlg->m_fr.hwndOwner = this->m_hWnd;
      m_pFRDlg->m_fr.lpstrFindWhat = m_pFRDlg->GetFindWhatStr();
      m_pFRDlg->m_fr.lpstrReplaceWith = m_pFRDlg->GetReplaceWithStr();
      m_pFRDlg->m_fr.wFindWhatLen = m_pFRDlg->GetFindWhatStrLen();
      m_pFRDlg->m_fr.wReplaceWithLen = m_pFRDlg->GetReplaceWithStrLen();
   }
}

CFindReplaceDialog::Create

Crea e visualizza un oggetto finestra di dialogo Trova o Trova/Sostituisci, a seconda del valore di bFindDialogOnly.

virtual BOOL Create(
    BOOL bFindDialogOnly,
    LPCTSTR lpszFindWhat,
    LPCTSTR lpszReplaceWith = NULL,
    DWORD dwFlags = FR_DOWN,
    CWnd* pParentWnd = NULL);

Parametri

bFindDialogOnly
Impostare questo parametro su TRUE per visualizzare una finestra di dialogo Trova . Impostarlo su FALSE per visualizzare una finestra di dialogo Trova/Sostituisci .

lpszFindWhat
Puntatore alla stringa di ricerca predefinita quando viene visualizzata la finestra di dialogo. Se NULL, la finestra di dialogo non contiene una stringa di ricerca predefinita.

lpszReplaceWith
Puntatore alla stringa di sostituzione predefinita quando viene visualizzata la finestra di dialogo. Se NULL, la finestra di dialogo non contiene una stringa di sostituzione predefinita.

dwFlags
Uno o più flag che è possibile usare per personalizzare le impostazioni della finestra di dialogo, combinate usando l'operatore OR bit per bit. Il valore predefinito è FR_DOWN, che specifica che la ricerca deve procedere in direzione verso il basso. Per altre informazioni su questi flag, vedere la struttura FINDREPLACE in Windows SDK.

pParentWnd
Puntatore alla finestra padre o proprietario della finestra di dialogo. Si tratta della finestra che riceverà il messaggio speciale che indica che è richiesta un'azione di ricerca/sostituzione. Se NULL, viene usata la finestra principale dell'applicazione.

Valore restituito

Diverso da zero se l'oggetto della finestra di dialogo è stato creato correttamente; in caso contrario, 0.

Osservazioni:

Affinché la finestra padre venga notificata delle richieste di ricerca/sostituzione, è necessario utilizzare la funzione Windows RegisterWindowMessage il cui valore restituito è un numero di messaggio univoco per l'istanza dell'applicazione. La finestra cornice deve avere una voce della mappa messaggi che dichiara la funzione di callback ( OnFindReplace nell'esempio seguente) che gestisce il messaggio registrato. Il frammento di codice seguente è un esempio di come eseguire questa operazione per una classe finestra cornice denominata CMyRichEditView:

// Message handler declared in CMyRichEditView class declaration
protected:
afx_msg LONG OnFindReplace(WPARAM wParam, LPARAM lParam);

 

// Register FindReplace window message.
static UINT WM_FINDREPLACE = ::RegisterWindowMessage(FINDMSGSTRING);

 

// Message map entry to map from message to handler function.
ON_REGISTERED_MESSAGE(WM_FINDREPLACE, &CMyRichEditView::OnFindReplace)

OnFindReplace All'interno della funzione si interpretano le intenzioni dell'utente usando i metodi CFindReplaceDialog::FindNext e CFindReplaceDialog::IsTerminating e si crea il codice per le operazioni di ricerca/sostituzione.

Esempio

Vedere l'esempio per CFindReplaceDialog::CFindReplaceDialog.

CFindReplaceDialog::FindNext

Chiamare questa funzione dalla funzione di callback per determinare se l'utente vuole trovare l'occorrenza successiva della stringa di ricerca.

BOOL FindNext() const;

Valore restituito

Diverso da zero se l'utente vuole trovare l'occorrenza successiva della stringa di ricerca; in caso contrario, 0.

CFindReplaceDialog::GetFindString

Chiamare questa funzione dalla funzione di callback per recuperare la stringa predefinita da trovare.

CString GetFindString() const;

Valore restituito

Stringa predefinita da trovare.

Esempio

LRESULT CMyRichEditView::OnFindReplace(WPARAM wparam, LPARAM lparam)
{
   UNREFERENCED_PARAMETER(wparam);

   CFindReplaceDialog *pDlg = CFindReplaceDialog::GetNotifier(lparam);

   if (NULL != pDlg)
   {
      // Use pDlg as a pointer to the existing FindReplace dlg to
      // call CFindReplaceDialog member functions
      if (pDlg->IsTerminating())
      {
         CString csFindString;
         CString csReplaceString;

         csFindString = pDlg->GetFindString();
         csReplaceString = pDlg->GetReplaceString();

         VERIFY(AfxGetApp()->WriteProfileString(AfxGetApp()->m_pszAppName,
                                                _T("FindString"), csFindString));
         VERIFY(AfxGetApp()->WriteProfileString(AfxGetApp()->m_pszAppName,
                                                _T("ReplaceString"), csReplaceString));
      }
   }

   return 0;
}

CFindReplaceDialog::GetNotifier

Chiamare questa funzione per recuperare un puntatore alla finestra di dialogo Trova sostituzione corrente.

static CFindReplaceDialog* PASCAL GetNotifier(LPARAM lParam);

Parametri

lParam
Valore lparam passato alla funzione membro della OnFindReplace finestra cornice.

Valore restituito

Puntatore alla finestra di dialogo corrente.

Osservazioni:

Deve essere usato all'interno della funzione di callback per accedere alla finestra di dialogo corrente, chiamare le funzioni membro e accedere alla m_fr struttura.

Esempio

Vedere CFindReplaceDialog::Create per un esempio di come registrare il gestore OnFindReplace per ricevere notifiche dalla finestra di dialogo Trova sostituzione.

LRESULT CMyRichEditView::OnFindReplace(WPARAM wparam, LPARAM lparam)
{
   UNREFERENCED_PARAMETER(wparam);

   CFindReplaceDialog *pDlg = CFindReplaceDialog::GetNotifier(lparam);

   if (NULL != pDlg)
   {
      // Use pDlg as a pointer to the existing FindReplace dlg to
      // call CFindReplaceDialog member functions
      if (pDlg->IsTerminating())
      {
         CString csFindString;
         CString csReplaceString;

         csFindString = pDlg->GetFindString();
         csReplaceString = pDlg->GetReplaceString();

         VERIFY(AfxGetApp()->WriteProfileString(AfxGetApp()->m_pszAppName,
                                                _T("FindString"), csFindString));
         VERIFY(AfxGetApp()->WriteProfileString(AfxGetApp()->m_pszAppName,
                                                _T("ReplaceString"), csReplaceString));
      }
   }

   return 0;
}

CFindReplaceDialog::GetReplaceString

Chiamare questa funzione per recuperare la stringa di sostituzione corrente.

CString GetReplaceString() const;

Valore restituito

Stringa predefinita con cui sostituire le stringhe trovate.

Esempio

Vedere l'esempio per CFindReplaceDialog::GetFindString.

CFindReplaceDialog::IsTerminating

Chiamare questa funzione all'interno della funzione di callback per determinare se l'utente ha deciso di terminare la finestra di dialogo.

BOOL IsTerminating() const;

Valore restituito

Diverso da zero se l'utente ha deciso di terminare la finestra di dialogo; in caso contrario, 0.

Esempio

Vedere l'esempio per CFindReplaceDialog::GetFindString.

CFindReplaceDialog::m_fr

Utilizzato per personalizzare un CFindReplaceDialog oggetto.

FINDREPLACE m_fr;

Osservazioni:

m_fr è una struttura di tipo FINDREPLACE. I relativi membri archiviano le caratteristiche dell'oggetto finestra di dialogo. Dopo aver costruito un CFindReplaceDialog oggetto, è possibile usare m_fr per modificare vari valori nella finestra di dialogo.

Per altre informazioni su questa struttura, vedere la FINDREPLACE struttura in Windows SDK.

Esempio

Vedere l'esempio per CFindReplaceDialog::CFindReplaceDialog.

CFindReplaceDialog::MatchCase

Chiamare questa funzione per determinare se l'utente vuole corrispondere esattamente al caso della stringa di ricerca.

BOOL MatchCase() const;

Valore restituito

Diverso da zero se l'utente vuole trovare occorrenze della stringa di ricerca che corrispondono esattamente al caso della stringa di ricerca; in caso contrario, 0.

CFindReplaceDialog::MatchWholeWord

Chiamare questa funzione per determinare se l'utente vuole corrispondere solo a parole intere.

BOOL MatchWholeWord() const;

Valore restituito

Diverso da zero se l'utente vuole corrispondere solo alle parole intere della stringa di ricerca; in caso contrario, 0.

CFindReplaceDialog::ReplaceAll

Chiamare questa funzione per determinare se l'utente desidera sostituire tutte le occorrenze della stringa.

BOOL ReplaceAll() const;

Valore restituito

Diverso da zero se l'utente ha richiesto che tutte le stringhe corrispondenti alla stringa di sostituzione vengano sostituite; in caso contrario, 0.

CFindReplaceDialog::ReplaceCurrent

Chiamare questa funzione per determinare se l'utente desidera sostituire la parola corrente.

BOOL ReplaceCurrent() const;

Valore restituito

Diverso da zero se l'utente ha richiesto che la stringa attualmente selezionata venga sostituita con la stringa di sostituzione; in caso contrario, 0.

CFindReplaceDialog::SearchDown

Chiamare questa funzione per determinare se l'utente vuole che la ricerca proceda verso il basso.

BOOL SearchDown() const;

Valore restituito

Diverso da zero se l'utente vuole che la ricerca proceda verso il basso; 0 se l'utente desidera che la ricerca proceda verso l'alto.

Vedi anche

Classe CCommonDialog
Grafico della gerarchia